
No.4ベストアンサー
- 回答日時:
こんばんは
図のような表組みが決まっているのなら関数を使うのが簡単ですね
当然そのような事はお判りかと思います
B4:=COUNTIF($H4:$H18,B3&"*") E4までフィル
F4:=COUNTIF(H4:H18,"<>")-SUM(B4:E4)
既に回答にありますね
VBAならば上記関数、手順を踏まえて
Sub test()
Dim keyRng As Range
Dim popRng As Range
'3行目4行目の右列が空いていれば
'Set keyRng = Range("B3", Cells(3, Columns.Count).End(xlToLeft))
Set keyRng = Range("B3:F3")
Set popRng = Range("H4", Cells(Rows.Count, "H").End(xlUp))
Dim r As Range, n As Long
For Each r In keyRng
r.Offset(1) = WorksheetFunction.CountIf(popRng, r.Value & "*")
n = n + r.Offset(1)
Next
n = n + WorksheetFunction.CountIf(popRng, "")
Set r = keyRng.Find(What:="その他", LookIn:=xlValues, LookAt:=xlWhole)
If Not r Is Nothing Then r.Offset(1) = popRng.Cells.Count - n
End Sub
For Eachはフィルのかわり? その他を1度無駄に出力していますが・・・
変数nは累計 SUMのかわり、 n + r.Offset(1) r.Offset(1)は変数の方がいい?
CountIf(popRng, "") 空白の数を累計に+
1列なのでCells.Count、から累計を引くと 解
No.3
- 回答日時:
総当り式に調べて各地域をカウントしてみます。
H 列の地域数は1000行目まで増やせます。またカウントする地域名が変わってもこのままカウントできます。カウントする地域を増やすことも出来ます。かなり自由度が高いと思います。
Sub sumingup()
Dim FoundCell As Range
Dim l As Integer ' 地域列の最終行
Dim c As Integer ' 地域列の検査する地名
Dim s As Integer ' 発生数行の値
Dim i
s = 0
With ActiveSheet
l = .Cells(1000, 8).End(xlUp).Row
For i = 4 To l
' 集計する地名の列から地域を探す
Set FoundCell = .Range("3:3").Find(What:=.Cells(i, 8))
If FoundCell Is Nothing Then
' 集計地域ではない場合"その他"にまとめる
c = .Range("3:3").Find(What:="その他").Column
Else
' 集計地域列の列数を
c = FoundCell.Column
End If
' 直前の値を退避させる
s = .Cells(4, c)
' 1を足す
.Cells(4, c) = s + 1
Next
End With
End Sub
No.1
- 回答日時:
こんにちは
シート関数を使うのなら、直接関数式を設定してしまう方が簡単そうな気もしますが・・
ひとまず、ご提示の方法に倣って書くなら、
Range("F4").Value = Range("H4:H18").Cells.Count - Application.Sum(Range("B4:E4"))
みたいな感じでしょうか。
(B4:F4の計算が終わってから、実行する必要があります)
なお、
>図ですとその他は4になります。
そのまま上記で計算すると、結果は「5」になります。
理由は、C4の値が2になっているから。
(「含む」でカウントするならC4の値は 3になると思いますが、ご提示の表では2となっていますので。)
※ H4:H18には空白セルは無いものと仮定しています。
空白セルを含んでかつそれはカウントしたくないという場合は、こちらもCOUNTAなどで算出する必要があるでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA実行後に元のセルに戻りたい
-
ExcelVBAを使って、値...
-
エクセルの複数データーをダブ...
-
Excel VBA マクロ ある列の最終...
-
任意フォルダから画像をすべて...
-
VBAでセルをクリックする回...
-
エクセルvbaで、別シートの最下...
-
Excel VBAで、 ヘッダーへのセ...
-
VBAでセル同士を比較して色付け
-
screenupdatingが機能しなくて...
-
i=cells(Rows.Count, 1)とi=cel...
-
ExcelVBA:オートフィルタをかけ...
-
”戻り値”が変化したときに、マ...
-
Excle VBA Findメソッドについて
-
Excelのプルダウンで2列分の情...
-
Excelで指定した日付から過去の...
-
プラスの数をマイナスにしたい...
-
エクセルのマクロについて教え...
-
エクセルマクロで結合セルに格...
-
特定の文字を条件に行挿入とそ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
Excelで指定した日付から過去の...
-
VBA実行後に元のセルに戻りたい
-
i=cells(Rows.Count, 1)とi=cel...
-
任意フォルダから画像をすべて...
-
【Excel VBA】指定行以降をクリ...
-
エクセルvbaで、別シートの最下...
-
【Excel】指定したセルの名前で...
-
VBAでセルをクリックする回...
-
Excelのプルダウンで2列分の情...
-
DataGridViewの各セル幅を自由...
-
特定の文字を条件に行挿入とそ...
-
VBA ユーザーフォーム ボタンク...
-
TODAY()で設定したセルの日付...
-
VBからEXCELのセルの値を取得す...
-
特定行の色を変えたい(FlexGrid)
-
ExcelのVBAで数字と文字列をマ...
-
Excel vbaで特定の文字以外が入...
-
VBA初心者です。結合セルを保持...
おすすめ情報