- ベストアンサー
EXCEL VBA 取得したセルの列の最終行
- EXCEL VBAを使用して、特定の列の最終行を取得する方法について教えてください。
- また、日付が今日であるかどうかを判定し、特定の条件を満たすセルをカウントする方法も知りたいです。
- 現在、セルの全体的な結果が取得されてしまう問題にも直面しており、その解決策を教えていただけると助かります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは 「実施日」というセルは1つしかないのですね? ' 不要 Wb.Worksheets("Sheet1").Cells.Find("実施日").Select Sel_Col = Wb.Worksheets("Sheet1").Cells.Find("実施日").Column Last_Row = Wb.Worksheets("Sheet1").Cells(Rows.Count, Sel_Col ).End(xlUp).Row で。 Wb.Worksheets("Sheet1").Cells(Sel_Col, i).Value は、 Wb.Worksheets("Sheet1").Cells(i, Sel_Col, i).Value です。 Cells(行, 列)ですから。 全体的には、ループでなくても関数CountIFだけでも出来そうですね。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
補足での、Cell( )はエクセルシートの場合はsが必要で シート.Cells(i,j)の書き方ですよ。質問ではsを付けているので凡ミスか。小生もよくミスるよね。 (WordVBAのテーブルなどやると、Cell(sなし)もでてきて混乱するが。) ーーー 他の点で Sub test01() Set Rng = Union(Range("A2"), Range("b5"), Range("c7"), Range("d9")) Set x = Rng.Find(Range("a1")) '<-- MsgBox x.Row '<-- MsgBox x.Column End Sub Findメソッドは上記のような書き方もできる
お礼
ありがとうございます。 凡ミスでした。
- ushi2015
- ベストアンサー率51% (241/468)
消し忘れました。 Wb.Worksheets("Sheet1").Cells(i, Sel_Col, i).Value は Wb.Worksheets("Sheet1").Cells(i, Sel_Col).Value で。
お礼
この問題に関して、解決できました。 ありがとうございました。
補足
ushi2015様 早速ご回答ありがとうございます。 最終行などを取得するのと代入するのを纏めてするということと Cellを使用する際、行と列を間違えていました。 そこは上手くいきましたが、下記がまだ上手くいきません。 得られたカウント数を下記のようにセルに入力したいのですが Rangeだと上手くいき、Cellだとエラーになってしまいます。 何か違いがあるんでしょうか? ○ Worksheets("Sheet2").Range("C10") = A_Count × Worksheets("Sheet2").Cell(10, 3) = A_Count また、本来は入力する先のセルも行列を取得して 下記のように指定したいというのが、やりたいことになります。 ThisWorkbook.Worksheets("Sheet2").Cell(Thisbook_A_Row, Thisbook_A_Col) = A_Count お手数ですが、宜しくお願いします。