マクロ初心者です。
文字を検索する列の範囲はD~Fとし、検索開始セルはDとします。
検索結果を表示するセルの先頭セルはAとし、A~Cに結果を表示させます。
もしD2に文字があった場合、A1に”1”を表示させます。
E3に文字があった場合は、A3に”1”を、B3に”1”を表示。
E5に文字があった場合、E列に文字が入ったのが2回目となる為、A5に”1”を、B5に”2”と表示。
上記のように、それぞれの列に何個文字があったのかカウントしていくマクロを作成したいのですが、作成できずに困っています。
よろしくお願いします。
No.2
- 回答日時:
マクロでやる理由があるのでしょうか?
関数ならA2セルに↓を入れて、A2:C6にコピーで出来ます。
=IF(COUNTA(D$2:D2)=0,"",COUNTA(D$2:D2))
No.3
- 回答日時:
>もしD2に文字があった場合、A1に”1”を表示させます。
>E3に文字があった場合は、A3に”1”を、B3に”1”を表示。
>E5に文字があった場合、E列に文字が入ったのが2回目となる為、A5に”1”を、B5に”2”と表示。
画像は現状(上手くできていない状態)でしょうか?
目的(最終形)でしょうか?
>E5に文字があった場合、E列に文字が入ったのが2回目となる為、A5に”1”を、B5に”2”と表示。
目的であると解釈するのであれば、質問内容と異なっております。
画像ではB5に「3」、質問内容では「2」
■画像の結果を表現したいのであれば・・・
【関数で処理】
A1セルに「=IF(COUNTA(D$1:D1)=0,"",COUNTA(D$1:D1))」を入力して
C5までオートフィル(コピー)してください。
【VBAで処理】
(1)エクセル関数を使用するなら
Sub test1()
Dim cnt As Long, i As Long, j As Long
For i = 1 To 3
For j = 1 To 5
Cells(j, i).ClearContents
cnt = WorksheetFunction.CountA(Range(Cells(1, i + 3), Cells(j, i + 3)))
If cnt > 0 Then Cells(j, i) = cnt
Next j
Next i
End Sub
(2)数えるなら
Sub test2()
Dim cnt As Long, i As Long, j As Long, l As Long
For i = 1 To 3
For j = 1 To 5
Cells(j, i).ClearContents
For l = 1 To j
If Cells(l, i + 3) <> "" Then
Cells(j, i) = Cells(j, i) + 1
End If
Next l
Next j
Next i
End Sub
■文章の結果を表示したいのであれば・・・・
以下の仕様と解釈しております
・対象が空白であれば上の合計値を継承
・連続して文字がある部分を合計範囲としてカウント
【関数で処理】
A1のセルに「=IF(ROW()=1,IF(D1<>"",1,""),IF(AND(D1<>"",OFFSET(D1,-1,0)=""),1,IF(OFFSET(A1,-1,0)="","",IF(D1<>"",OFFSET(A1,-1,0)+1,OFFSET(A1,-1,0)))))」を入力して
C5までオートフィル。
【VBAで処理】
Sub test3()
Dim cnt As Long, i As Long, j As Long, l As Long
For i = 1 To 3
For j = 1 To 5
Cells(j, i).ClearContents
l = j
Do While Cells(l, i + 3) <> ""
Cells(j, i) = Cells(j, i) + 1
l = l - 1
If l = 0 Then Exit Do
Loop
If j > 1 And Cells(j, i + 3) = "" Then Cells(j, i) = Cells(j - 1, i)
Next j
Next i
End Sub
て感じでしょうか。
No.4ベストアンサー
- 回答日時:
失礼しました。
2行目が開始行であるところを、1行目からと見間違え、
ご質問者の文章と画像が1行ズレていると勘違いしておりました。
ですが、C5、C6に1が入っていないように見えますが。
【関数で処理】
A2セルに「=IF(COUNTA(D$2:D2)=0,"",COUNTA(D$2:D2))」を入力して
C6までオートフィル(コピー)してください。
【VBAで処理】
(1)エクセル関数を使用するなら
Sub test1()
Dim cnt As Long, i As Long, j As Long
For i = 1 To 3
For j = 2 To 6
Cells(j, i).ClearContents
cnt = WorksheetFunction.CountA(Range(Cells(1, i + 3), Cells(j, i + 3)))
If cnt > 0 Then Cells(j, i) = cnt
Next j
Next i
End Sub
(2)数えるなら
Sub test2()
Dim cnt As Long, i As Long, j As Long, l As Long
For i = 1 To 3
For j = 2 To 6
Cells(j, i).ClearContents
For l = 1 To j
If Cells(l, i + 3) <> "" Then
Cells(j, i) = Cells(j, i) + 1
End If
Next l
Next j
Next i
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/15 08:30
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/08 09:05
- Excel(エクセル) Excelでの検索結果を含む行だけを表示させたい 5 2023/03/10 17:08
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/25 16:07
- Excel(エクセル) 表内で、Enterキーで横→行の最後入力したら次の行の先頭に移動するマクロを作りたい 3 2022/05/01 21:19
- Excel(エクセル) エクセルのことで教えてください。 A1セルに、 別シートのA1セルが1のときは「A」、2のときは「B 4 2023/02/24 23:08
- Excel(エクセル) countif関数について質問 4 2022/06/14 12:11
- Excel(エクセル) エクセルの数式について教えてください。 2 2023/02/18 11:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで大量のファイルをシート名...
-
Vba 実数および実数タイプの変...
-
エクセルVBAについて
-
ユーザーフォームに別シートか...
-
VB.net(VB)で、フォームにExcel...
-
Excelのマクロについて教えてく...
-
エクセルの合計を自動で表示さ...
-
Excelのマクロでワードのテキス...
-
VBAの計算で@が出てしまう件
-
VBA listBoxから
-
エクセルのマクロについて教え...
-
Excelのマクロについて教えてく...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
左右の表のキー位置を合わせたい
-
VBAの質問になります メッセー...
-
Excel マクロについての相談
-
VBA レジストリの値の読み方に...
-
2つのマクロでチェックボックス...
-
Vba SelStart、SelLen教えてく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBA 定義されたプロージ...
-
Excel-VBAのmsgBox()の不思議
-
【VBA】マクロの入ったファイル...
-
VBA 複数条件の分岐処理の上手...
-
現在のブックを閉じないで、マ...
-
VBAで各列の"+"と"o"の合計数を...
-
VBAに詳しい方教えてください。
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ユーザーフォームに別シートか...
-
エクセルのマクロについて教え...
-
ExcelVBA シート名を複数セルか...
-
エクセルのマクロについて教え...
-
VBA listBoxから
-
Excelのマクロについて教えてく...
-
エクセルのマクロについて教え...
おすすめ情報