Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
  • ベストアンサー

エクセル マクロ 文字列からの行数の取得

エクセルでマクロ初心者です。よろしくお願いします。例えば1列目にデータ名が入力されていてその個数が可変である場合(小計は末尾ではありません)小計行の1列目から数式をいれたいのですが、行数が固定でないため小計と書かれたセルの行数を取得したいのですが、わかりません。いい方法をお願いします。    A B C D データ aa bb cc 小計 ・ ・

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

  • ベストアンサー
回答No.1

Sub test() Dim ad, tmp As Range, y As Long Set tmp = Columns(1).Find("*小計*", lookat:=xlWhole) ad = tmp.Address Do Set tmp = Columns(1).FindNext(tmp) y = tmp.Row '***** ここに処理を記入 MsgBox y Loop While Not tmp Is Nothing And tmp.Address <> ad End Sub これでどうですか? もし小計が一つしかないのであれば、以下でもOKです。 y = Columns(1).Find("*小計*", lookat:=xlWhole).Row Msgboxは確認で入れているので、実際にはいらないです。 Rowというのが行のことです。 たとえば、最終行は以下の式で取得できます。 y = Range("A65536").End(xlUp).Row 基本中の基本だと思うので、頑張って覚えて下さい。

kakakakasa
質問者

お礼

ありがとうございます。 調べながらですが理解できました。 基本から勉強します。

すると、全ての回答が全文表示されます。

その他の回答 (1)

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

例データ データ 金額 りんご 12 みかん 23 柿 11 ぶどう 5 小計 51 栗 8 キウウィ 23 イチジク 4 もも 1 なし 6 小計 42 グレープ 3 すいか 7 メロン 11 小計 21 ただし、もちろん「小計」のB列は空白 コード Sub Search() Dim objcell As Range Dim strAddress As String '--第1発見 Set objcell = Worksheets("Sheet1").Range("A1:A100").Find(what:="小計") If objcell Is Nothing Then MsgBox "見つかりませんでした" Exit Sub Else frstAddr = objcell.Address f = objcell.Row objcell.Offset(0, 1) = Application.WorksheetFunction.Sum(Range("B2:B" & f)) S = f + 1 End If '--第2発見以後 Do While Not objcell Is Nothing Set objcell = Range("A:A").FindNext(objcell) If frstAddr = objcell.Address Then Exit Do Else f = objcell.Row objcell.Offset(0, 1) = Application.WorksheetFunction.Sum(Range("B" & S & ":B" & f)) S = f + 1 End If Loop End Sub 結果 上記の通り。

kakakakasa
質問者

お礼

ありがとうございます。 とても参考になりました。 第二発見まで対応していて、 とてもたすかりました。

すると、全ての回答が全文表示されます。

関連するQ&A