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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Excel(エクセル) VBA カゥントで数値の範囲を規制 1 2022/05/20 06:20
- Excel(エクセル) 指定文字列が該当するA列をアクティブセルにするには 3 2022/08/17 13:18
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
- Excel(エクセル) エクセルのマクロを教えてください。 1 2022/03/30 09:29
- Visual Basic(VBA) Excel VBA 転記について 2 2023/02/28 08:34
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のセルが空白だったら、そ...
-
i=cells(Rows.Count, 1)とi=cel...
-
ExcelVBAを使って、値...
-
スプレッドシートの数値列に対...
-
screenupdatingが機能しなくて...
-
【Excel】指定したセルの名前で...
-
ロジスティック曲線作成 vb6サ...
-
特定行の色を変えたい(FlexGrid)
-
指定文字以外のカウント
-
リスト表からWクリックで指定セ...
-
エクセル 複数範囲の中の1セル...
-
エクセル マクロで セルの範...
-
特定の文字を条件に行挿入とそ...
-
Excelのプルダウンで2列分の情...
-
Excel vbaで特定の文字以外が入...
-
マクロ VBA ハイパーリンクで飛...
-
エクセルVBA 条件にあうときセ...
-
VLOOKUP関数で別ファイルを指定...
-
VBSでエクセル内の行数を取得す...
-
エクセルマクロでアニメを作る...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
i=cells(Rows.Count, 1)とi=cel...
-
【Excel VBA】指定行以降をクリ...
-
Excelで指定した日付から過去の...
-
【Excel】指定したセルの名前で...
-
TODAY()で設定したセルの日付...
-
EXCELで変数をペーストしたい
-
Excel VBA、 別ブックの最終行...
-
Excelのプルダウンで2列分の情...
-
VBA コピーして次の値まで貼り...
-
screenupdatingが機能しなくて...
-
エクセルVBAでコピーして順...
-
VBA初心者です。結合セルを保持...
-
セル色なしの行一括削除
-
VBAでセルをクリックする回...
-
Excel vbaで特定の文字以外が入...
-
DataGridViewの各セル幅を自由...
-
特定の文字を条件に行挿入とそ...
-
【VBA】指定したセルと同じ値で...
おすすめ情報