VBA实战技巧精粹019:如何快速填充考场号及座号
問題的提出:一般而言,考場座號都是1至30號,如果考場數較少的話,完全可以采用鼠標操作,但是如果考場數太多,尤其是在填充考場號時才是麻煩!!比如高考考場的安排,那工作量可想而知,以前都是鼠標操作的方式進行,感覺特別別扭,現在想著用VBA實現自動操作。
實現的思路:先計算出共有多少個學生需要編排考場,然后利用ceiling函數取得向上的最小整數,即為考場數。利用考場數即為需要循環操作的次數即可實現。
源代碼如下:
Sub 自動填充座號及考場號()
' 實現可以自動填充座號,關鍵是在不足30人的考場中如何實現按實際人數進行填充
??? Dim i As Integer, totalR As Integer, k As Integer, j As Integer
??? i = Application.WorksheetFunction.Ceiling((Range("A65536").End(xlUp).Row - 1) / 30, 1)
??? For k = 1 To i
??????? For j = 2 + (k - 1) * 30 To 31 + (k - 1) * 30
??????????? Cells(j, 2).Value = j - (k - 1) * 30 - 1? '第2列填充座號。
??????????? Cells(j, 3).Value = k? '第3列填充考場號。
??????????? Cells(j, 4).Value = Worksheets("sheet2").Cells(k, 1).Value '利用事先準備的考場位置進行填充
??????? Next j
??? Next k
??? Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete '利用第1列為姓名或其它,將為空的單元格所在行刪除即為最終結果
End Sub
解釋如下:
首先,為什么在((Range("A65536").End(xlUp).Row - 1) / 30, 1)中要減去1呢?因為有列標題嘛。
其次,用到了Ceiling函數,為Excel工作表函數,作用是取得向上的整數。
說明
將參數 Number 向上舍入(沿絕對值增大的方向)為最接近的 significance 的倍數。例如,如果您不愿意使用像“分”這樣的零錢,而所要購買的商品價格為 ¥4.42,可以用公式 =CEILING(4.42,0.05) 將價格向上舍入為以“角”表示。
語法
CEILING(number, significance)CEILING 函數語法具有下列參數 (參數:為操作、事件、方法、屬性、函數或過程提供信息的值。):
- Number????必需。要舍入的值。
- Significance????必需。要舍入到的倍數。
說明
- 如果參數為非數值型,CEILING 返回錯誤值 #VALUE!。
- 無論數字符號如何,都按遠離 0 的方向向上舍入。如果數字已經為 Significance 的倍數,則不進行舍入。
- 如果 number 和 significance 都為負,則對值按遠離 0 的方向進行向下舍入。
- 如果 number 為負,significance 為正,則對值按朝向 0 的方向進行向上舍入。
示例
如果將示例復制到一個空白工作表中,可能會更容易理解該示例。
如何復制示例?
- 選擇本文中的示例。
?要點???不要選擇行或列標題。
從“幫助”中選擇示例- 按 Ctrl+C。
- 在 Excel 中,創建一個空白工作簿或工作表。
- 在工作表中,選擇單元格 A1,然后按 Ctrl+V。
?要點???若要使該示例能夠正常工作,必須將其粘貼到工作表的單元格 A1 中。
- 要在查看結果和查看返回結果的公式之間進行切換,請按 Ctrl+`(重音符),或在“公式”選項卡上的“公式審核”組中,單擊“顯示公式”按鈕。
將示例復制到一個空白工作表中后,可以按照您的需要改編示例。
|
|
BuzzNet: Excel VBA
del.icio.us: Excel VBA
Flickr: Excel VBA
IceRocket: Excel VBA
LiveJournal: Excel VBA
Technorati: Excel VBA
轉載于:https://www.cnblogs.com/xiehui/archive/2011/08/13/2136917.html
總結
以上是生活随笔為你收集整理的VBA实战技巧精粹019:如何快速填充考场号及座号的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端学习(1917)vue之电商管理系统
- 下一篇: 前端学习(1749):前端调试值之如何查