2008年3月29日 星期六

Excel的技巧實例

Excel中快速定位的技巧實例 (2008-11-07)
操作提速 Excel裡隨心所欲輸小數! (2008-11-05)
兩種方法隨你挑!用Excel2007做成績表排序 (2008-10-31)
Excel技巧:Excel2007的單元格定位快捷鍵 (2008-10-29)
用好精緻美觀的Excel2007文檔主題樣式 (2008-10-27)
Excel 2007無法安裝加載項解決辦法 (2008-10-22)
更改多個Excel文檔數據合併計算 (2008-10-20)
把Excel裡的一列數據快速轉成多列數據 (2008-10-20)
Excel 2007單元格內容的移動或複製 (2008-10-17)
Excel經典實用操作技巧35招 (2008-10-15)
微軟Office Excel使用中的種種限制 (2008-10-15)
Office Excel技巧之返回排序前的表格 (2008-10-15)
辦公小技巧 如何複製保留源列寬Excel表格 (2008-10-15)
在Excel中讓你填充不連續的單元格 (2008-10-08)
Excel2007數字格式與文本格式互轉 (2008-10-07)
為Excel2007數據設置只讀和修改密碼 (2008-09-02)
Excel經典實用技巧35招 (2008-09-02)
探尋Excel中正確輸入分數的秘密! (2008-08-22)
Excel 2007中內容重排功能的應用! (2008-08-22)
多版本Office如何設定默認打開方式 (2008-08-01)
Excel2007中的單元格定位快捷鍵 (2008-07-28)

介紹如何利用VBA輕鬆實現成績分析表的特殊排序,先看下面的實例。

  圖1是一張已經分析好的成績分析表,可教務主任要求:要把各班各門學科所在年級的名次加在均分後,那樣一看就一目瞭然了。以前都是用眼睛觀察,然後將名次手工添加到均分後面,但成績一經修改就不得不重新再分析了,非常麻煩。 網管朋友網www_bitscn_net




  大家知道,用Excel提供的升序和降序工具可以實現各學科的均分排序,但排序後,班級的順序就亂了。如果通過排序獲取均分的名次再恢復對班級的排序,這樣是可行的,但八、九門學科一列一列地操作,工作量非常大,還容易出錯。而且成績修改後,還得重複勞動。後來筆者用一段VBA代碼實現了這一要求。

網管u家u.bitsCN.com


用控件工具箱中的「按鈕」工具畫一個命令按鈕,將其「Caption」 屬性值改為「均分排序」,雙擊該按鈕,在其Click事件中輸入如下代碼:

  Private Sub CommandButton1_Click()
  Dim myarray()
  Dim m, n, i, j As Integer
  n = Application.WorksheetFunction.CountA(Columns(1))

  '從第二列到第八列一共循環七次

  For m = 2 To 8

  '給數組賦值

  ReDim myarray(n)
  For i = 3 To n
  myarray(i) = Cells(i, m).Value
  Next i

  '用冒泡排序法對數組中的元素進行排序操作

  For j = 0 To n - 1
   For i = 0 To n - 1 - j
   If myarray(i) 〈 myarray(i + 1) Then
   temp = myarray(i)
   myarray(i) = myarray(i + 1)
   myarray(i + 1) = temp
   End If
   Next
  Next

  '將各數值在列中的排名加括號後添加到原單元格的數值後面,中間空一個空格

  For i = 3 To n
  Cells(i, m).Value = Cells(i, m).Value && Space(1) && '(' && Application.WorksheetFunction.Match(Cells(i, m), myarray, -1) && ')'

中國網管論壇bbs.bitsCN.com


  Next i
  Next m

  '主體程序執行完畢

  '使各列的寬度與單元格的大小相適應

  Cells.Select
  Selection.Columns.AutoFit

  '禁止該按鈕功能(防止被再次點擊)

  CommandButton1.Enabled = False

  MsgBox '排序完成,該操作只能執行一次!', vbOKOnly, '提示框'

  End Sub

  關閉代碼窗口返回到Excel工作表中,在運行模式下單擊〔均分排序〕按鈕,我們就會看到,各班各學科均分在年級中的名次已自動添加到相應的單元格中了(如圖2)。
網管u家www.bitscn.net




網管bitscn_com


  添加名次後,程序已設定了自動擴充單元格的大小以適應單元格中的內容。另外,為了防止用戶多次點擊〔均分排序〕按鈕,該按鈕在程序執行完後即被設為無效,若要再次修改本程序,只需將該按鈕的「Enabled」屬性值設為「True」就可以了。
【转自www.bitsCN.com

沒有留言: