[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ある範囲内に特定の文字列があれば行番号を取得』(祥子)
したいです。
「Sheet2」にのA列に"AA"という文字列が有れば、その文字列があるセルの行番号を取得したいです。
やり方を教えてください。お願いします。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
マクロですか?
知るだけなら、Sheet2のA列選択してCtrl+Fで「AA」を検索。
オプションで「セル内容が完全に同一〜」
全て検索で、一致するセルアドレスが表示されますので行番号も分かります。
どのように取得したいのでしょうか?
(ウッシ) 2016/01/13(水) 15:37
ワークシート関数の場合。 Sheet2のA列内に「AA」という文字が一つだけの場合、または複数ある場合に一番上のものの行番号を返す場合。
=MATCH("AA",A:A,0)
もし、別のシートに式を入れる場合は =MATCH("AA",Sheet2!A:A,0)
(ねむねむ) 2016/01/13(水) 15:39
Sub test() Dim i As Long
With Sheets("Sheet2") For i = 1 To .Cells(.Rows.Count, "A").End(xlUp).Row If 0 < InStr(.Cells(i, "A").Value, "AA") Then MsgBox i & "行目" Exit For End If Next i End With End Sub (???) 2016/01/13(水) 15:41
With Sheets("sheet2") For i = 1 To .Cells(.Rows.Count, "A").End(xlUp).Row If 0 < InStr(.Cells(i, "A").Value, sheet2) Then Exit For Else i = i + 1 sheet2.Cells(i, 1).End(xlUp).Offset(1, 0) = sheet2 End If
Next i
End With
(sheet2という変数があります)
For i = 1 To 〜 が終わったあと、最終行?のiを使って
i = i + 1
sheet2.Cells(i, 1).End(xlUp).Offset(1, 0) = sheet2
としたいのですが、i=1とか2のときにこの処理がきてしまって、
その前に入っていた文字の上にかぶってしまいます。
どこに置き換えたら良いですかね・・・?
(祥子) 2016/01/13(水) 16:08
あと、Sheet2という変数名は使っては駄目です。SHeet2というシート名が存在する場合、それはオブジェクト名ですから。
(とりあえず、そのままコーディングしておきますが、別名にしておいてください)
With Sheets("Sheet2") For i = 1 To .Cells(.Rows.Count, "A").End(xlUp).Row If 0 < InStr(.Cells(i, "A").Value, Sheet2) Then .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Value = Sheet2 Exit For End If Next i End With
で、このままだとA列末尾に検索した文字列が増えていきますが、それは望んだ結果では無いですよね?
見つかった後は、どのセルにどういう値を代入したいのか、はっきりしてください。
(???) 2016/01/13(水) 16:27
全文検索で似たような記事がないか検索はかけたんですが・・・同じような質問があったのでしょうか?すみません
あっシート名を変数に使ってはだめなんですね。確かに紛らわしいですよね。ありがとうございます。
最後にどういう処理をするかはまだ決まっていなくて、明日になればわかるんですが、先にある程度作っておきたかったのです。
増えていく件については、Exit Forの前に変数をおいて"1"という数値を入れて、
end withのあとで、その変数の"1"と入っていれば文字列を入れる。という風に書き換えています。
他に良いやり方があるかもしれませんが・・・
(祥子) 2016/01/13(水) 18:08
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.