• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL VBA 取得したセルの列の最終行)

EXCEL VBA 取得したセルの列の最終行

このQ&Aのポイント
  • EXCEL VBAを使用して、特定の列の最終行を取得する方法について教えてください。
  • また、日付が今日であるかどうかを判定し、特定の条件を満たすセルをカウントする方法も知りたいです。
  • 現在、セルの全体的な結果が取得されてしまう問題にも直面しており、その解決策を教えていただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.1

こんにちは 「実施日」というセルは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だけでも出来そうですね。

garigarisama
質問者

お礼

この問題に関して、解決できました。 ありがとうございました。

garigarisama
質問者

補足

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 お手数ですが、宜しくお願いします。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

補足での、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メソッドは上記のような書き方もできる

garigarisama
質問者

お礼

ありがとうございます。 凡ミスでした。

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.2

消し忘れました。 Wb.Worksheets("Sheet1").Cells(i, Sel_Col, i).Value は Wb.Worksheets("Sheet1").Cells(i, Sel_Col).Value で。

関連するQ&A