- ベストアンサー
マクロ 関数式の中にRangeでセルを参照するには
Range("B2").Formula = "=COUNTIF($A$2:$A$100,A2)" A行のセル(1列はタイトルなのでA2以降) に入力させているものが A行自身の中に何個あるかを数えて B2以降に表示させたいのですが A列の最終行を取得して(下の式で) ↑の式の$A$100の部分に どのように記述したらよろしいでしょうか? もしくは 考える方向がおかしい、というような 御指摘もありましたらお願いします (B列には現時点では式のまま表示しても 問題ありません。 B列の式を下方向へコピーする方法は 以前こちらで御教授していただきました) Dim mRng As Range Set mRng = Range("A2", Range("A65536").End(xlUp))
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
エクセルVBAで関数を使うには (1)Range("B2").Formula ="=関数"を使う (2)WorksheetFunctionを使う (3)繰り返しのロジックを使う(関数を使うに該当しませんが) (2)は Sub test01() d = Range("A65536").End(xlUp).Row MsgBox d Cells(2, "B") = WorksheetFunction.CountIf(Range(Cells(2, "A"), Cells(d, "A")), Cells(1, "A")) End Sub (1)は Sub test02() d = Range("A65536").End(xlUp).Row MsgBox d x = "A" & d s = "=CountIf(A2:" & x & ",A1)" MsgBox s Cells(2, "B").Formula = s End Sub なんてのも出来ます。 (3)は Sub test03() d = Range("A65536").End(xlUp).Row MsgBox d c = 0 For i = 2 To d If Cells(i, "A") = Cells(1, "A") Then c = c + 1 End If Next i Cells(2, "B") = c End Sub のようなものです。
その他の回答 (2)
- ja7awu
- ベストアンサー率62% (292/464)
Range("B2").Formula = "=COUNTIF($A$2:" & Range("A65536").End(xlUp).Address & ",A2)" で如何でしょうか。 A列のデータがある最終行まで、B列に計算式を設定するのであれば、 Dim Rng As Range For Each Rng In Range("A2", Range("A65536").End(xlUp)) Rng.Offset(, 1).Formula = "=COUNTIF($A$2:" & _ Range("A65536").End(xlUp).Address & "," & Rng.Address(False, False) & ")" Next Rng たぶん、このようなことだと思いますが、違っていたらごめんなさい。
お礼
遅くなって申し訳ないです 式のほかに式コピーまで記入していただいて ありがとうございました。 しかし、addressとrangeの 使い分けというか微妙な記述の違いって 難しそうですね^^ ありがとうございました
- mshr1962
- ベストアンサー率39% (7417/18945)
Range("B2").Formula = "=COUNTIF($A$2:$A$" & Range("A65536").End(xlUp).Row & ",A2)" で出来ませんか?
お礼
遅くなって申し訳ないです 無事できました ありがとうございました!
お礼
遅くなって申し訳ありません 様々な角度からの回答ありがとうございます 同じ結果を出すにも いろいろ方法があるのですね まだ使い分けるまでいたりませんが 地道に勉強したいです