|
▼H=R さん:
配列内ループもメモリー内処理ですからけっして非効率ではないと思います。
10000万行程度なら問題は全くないと思いますよ。
あるいは、配列を作業シートに落とし込んで、作業シート上でCountIfを使う手もあります。
変数定義は省略しますが以下の例では2次元配列名を v としています。
(配列内ループ方式)
Dim i As Long
Dim j As Long
Dim x As Long
For j = LBound(v, 2) To UBound(v, 2)
x = 0
For i = LBound(v, 1) To UBound(v, 1)
If v(i, j) = "ABC" Then x = x + 1
Next
MsgBox j & "列目:" & x
Next
(作業シート使用方式)
Dim r As Range
With Sheets("作業シート")
.Cells.ClearContents
.Range("A1").Resize(UBound(v, 1), UBound(v, 2)).Value = v
For Each r In .Range("A1").CurrentRegion.Columns
MsgBox r.Column & "列目:" & WorksheetFunction.CountIf(r, "ABC")
Next
End With
|
|