[[20210820110415]] 『VBAでCountifs関数の検索条件をループしたい』(ホコ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBAでCountifs関数の検索条件をループしたい』(ホコ)

こんにちは。WebでVBAの構文を探しながら独学で作成しているのですが、ループで参照値を変える方法が分かりません。お助けいただけると嬉しいです。

Dim i As Long
For i = 1 to 10

  If Range("Q" & i) ="", then

  Else
     Range("P" & i).Formula ="=COUNTIFS(L:L,Q2)"

  End If

Next i

End Sub

上記の構文の通り、P1セル〜P10セルに「=COUNTIFS(L:L,Q2)」が入力されます。

行いことは、Countifsの参照セルも1行ずつ下に移動したい。
 P2セルには「=COUNTIFS(L:L,Q2)」
 P3セルには「=COUNTIFS(L:L,Q3)」
 P4セルには「=COUNTIFS(L:L,Q4)」

どのように構文を作成すればよいのでしょうか?

< 使用 Excel:Office365、使用 OS:Windows10 >


 やり方はいくつかありますが、

 Sub sample1() ' 変数iをつかって、式を変化させる
    Dim i As Long
    For i = 1 To 10
      If Range("Q" & i) <> "" Then
         Range("P" & i).Formula = "=COUNTIFS(L:L,Q" & i & ")"
      End If
    Next i
 End Sub

 Sub sample2() ' FormulaR1C1プロパティをつかってR1C1形式の相対参照を使う
    Dim i As Long
    For i = 1 To 10
      If Range("Q" & i) <> "" Then
         Range("P" & i).FormulaR1C1 = "=COUNTIFS(C12,RC[1])"
      End If
    Next i
 End Sub
(´・ω・`) 2021/08/20(金) 11:24

 ちょっと入力する式を変えて
 Sub tst()

    Range("P1:P10") = "=IF(Q1="""","""",COUNTIF(L:L,Q1))"

 End Sub
 としてしまうのはどうだろうか?
(ねむねむ) 2021/08/20(金) 11:29

ねむねむ様

ありがとうございました。
Sample1の方法、アイデアは浮かんでいたのですが自分では式をかけなかったのです。大変参考になりました。

そもそも式を変えてシンプルにする Sample2もいいですね。もう少し頭を柔軟にしたいと思いました。
(ホコ) 2021/08/20(金) 12:45


 1番目の回答は´・ω・`さんですよ。
(ねむねむ) 2021/08/20(金) 12:48

ねむねむ様

失礼いたしました!度々ありがとうございます。

´・ω・` 様
大変ありがとうございました。勉強になりました。
(ホコ) 2021/08/20(金) 13:13


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.