後臺有夥伴留言幫忙解決一個excel問題,情況是這樣的,如下圖:
一列中只有「是」和「否」的兩種情況,分別統計這一列「是」和「否」出現的次數,要求是出現了不同的的重新統計。
問題不復雜,VBA能很快解決問題。直接上代碼:
Sub count()
Dim Rng As Range
Dim i&, Col&, Fist, Last
Dim count
Set Rng = Application.InputBox("請選擇單列數據列!", Type:=8)
'用戶選擇數據列
Set Rng = Intersect(Rng.Parent.UsedRange, Rng)
'intersect語句避免用戶選擇整列造成無謂運算
Col = Rng.Column 'Rng所在列
Fist = Rng.Row
'Rng開始行,用戶選擇的區域並不是一定從第一行開始,因此需要此句判斷
Last = Fist + Rng.Rows.count - 1 'Rng結束行
Application.ScreenUpdating = False '取消屏幕更新
Application.DisplayAlerts = False
'取消消息提醒。當有值單元格被合併時屏蔽提示信息
Rng.Parent.Select '激活Rng對象所在的工作表,避免跨工作表操作問題
count = 1
For i = Last To Fist + 1 Step -1
'對Rng進行從後向前遍歷
If Cells(i, Col) <> Cells(i - 1, Col) Then
Cells(i, Col + 1) = count
count = 1
ElseIf Cells(i, Col) = Cells(i - 1, Col) Then
count = count + 1
End If
Next
End Sub
演示效果圖
把需要統計的數據粘貼進去即可,或者直接把上面的代碼複製運行也行。
需要注意的是,第一行為標題行,不要粘貼數據。代碼是從第二行開始統計。
同樣的,永恆君直接把上面實例VBA的文件分享出來,需要的就直接使用吧。
wx公號後臺回覆“統計”即可。
不少人對VBA代碼有牴觸心理,其實沒有那麼複雜,把他看成一個稍微複雜點的函數即可。
當然如果並不打算深入學習VBA,只是臨時使用下,那隻要會複製黏貼就好了!
至於怎麼用VBA代碼,可以參考之前的文章:
Excel vba 實例(1) - 批量製作工資表頭
Excel vba 實例(2) - 批量將工作表拆分為單獨文件
Excel vba 實例(3) - 多個工作簿批量合併
Excel vba 實例(4) - 根據已有名稱,批量新建表格
Excel vba 實例(5) - 快速合併n多個相同值的單元格
Excel vba 實例(6) - 一鍵彙總多個sheet數據到總表
Excel vba 實例(7)-一鍵批量打印工作簿
Excel vba 實例(8)- 利用正則表達式進行定向提取
Excel vba 實例(9)- 批量插入、刪除表格中的空行
Excel VBA功能很強大,但是要熟練的運用起來還是有一定的難度,好在永恆君幫大家蒐集了幾套關於VBA的視頻教程,非常的實用。
需要的話,後臺回覆“VBA”獲取吧~~
歡迎交流!
閱讀更多 永恆君的百寶箱 的文章