プロが教える店舗&オフィスのセキュリティ対策術

エクセルでマクロで計算したいことがあるのですが、なかなか本を見ただけではすんなりできそうにないので質問させていただきます。

たとえば、A1セル内に佐藤という名前があって、そのときE1セルは空白ではないという条件で、これを100行までカウントし、その答えをR1セルに返すというプログラムはどのように書いたらいいのでしょう??特に、カウントした値をR1セルに返すというところが、本にありそうでなかなかないような気がしました。いろいろな方法があるとは思いますが、よろしくお願いします。

A 回答 (4件)

プログラムを使う良さは、相対化できることにあります。


例えば100行と決めるのでなくデータ行数分について
とか
データの終わりの行の、直下行にとか
ーーー
本質問も「R1」は実のセル番地ですか?
「データの終わりの行の、直下行にとか」の意味ではないですか?
VBAの解説書に、特定のセル(R1)に値を入れるという、解説や実例が載ってないはずがないと思うから、質問の表現が質問者の意図を尽くしてないのではないかとふと思ったわけです。
    • good
    • 0

1. [ツール] - [マクロ(M)] - [Visual Basic Editor(V)] でVisual Basic Editor起動


2. [挿入] - [標準モジュール(M)] で標準モジュール(Module1)を追加

'====サンプルコード========
Sub R_Count100()
Dim i As Integer
Dim intCnt As Integer
intCnt=0
For i = 1 To 100 Step 1
If Cells(i, 1).Value = "佐藤" And Cells(i, 5).Value <> "" Then intCnt = intCnt + 1
Next i
Cells(1, 18).Value = intCnt
End Sub
'=====サンプルコード=========
Forで1行目~100行目をループさせて、IF文で有効の行かどうかを判定し、有効であったらカウンタintCntを+1します。
Cells(1, 18).Value = intCnt がR1への書き戻しです。(←これだけでよかったのかな?(^^;;))
Range("A1")はCells(1,1)と同じです。
Range("R1")はCells(1,18)と同じです。
    • good
    • 0

まずマクロが必要でしょうか?


下記のような場合ならマクロは無しで出来ます。
Aに佐藤があってEが空白でないならRに1が入ります
Aが佐藤ではないorEが空白ならRに0が入ります
Rの最下行でR列を足せばカウントできます。

  A  ・・・E・・・R
1  佐藤      =IF(LEN(B1)>0,COUNTIF(A1,"佐藤"),0)
2  鈴木      =IF(LEN(B2)>0,COUNTIF(A2,"佐藤"),0)
3  佐藤      =IF(LEN(B3)>0,COUNTIF(A3,"佐藤"),0)
・ ・ 
・ ・ 
・ ・ 
100 井上
101         = Sum(R1:R100)
    • good
    • 0

cells( R1 ).value = カウントした値


でOKだと思いますが。(R1はそのままではまずいですが)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!