8

Excelで特定の行の文字列を検索するにはどうすればよいですか? long 型の変数に行インデックスがあります。

Dim rowIndex As Long
rowIndex = // some value being set here using some code.

ここで、特定の値が行に存在するかどうかを確認する必要があります。そのインデックスはrowIndexです。

一致する場合は、最初に一致したセルの列インデックスを取得する必要があります。

Match 関数を使用してみましたが、セル範囲の代わりに rowIndex 変数を渡す方法がわかりません。

Dim colIndex As Long    
colIndex = Application.Match(colName, Range("B <my rowIndex here>: Z <my rowIndex here>"), 0)
4

4 に答える 4

16

これを試して:

Sub GetColumns()

Dim lnRow As Long, lnCol As Long

lnRow = 3 'For testing

lnCol = Sheet1.Cells(lnRow, 1).EntireRow.Find(What:="sds", LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False).Column

End Sub

colIndex と rowIndex は Excel オブジェクト ライブラリで既に言及されているため、おそらく変数名として使用しないことをお勧めします。

于 2013-01-08T10:45:30.663 に答える
1

これは別のコードではありません。ただし、VBA で Excel 関数を使用する場合のパフォーマンスを確認してください。

追伸: **あとで、ご希望の場合は をごpattern matching検討ScriptingObject **Regexください。

于 2013-01-08T11:05:06.573 に答える
0

気にしないで、私は答えを見つけました。

これでうまくいきます。

Dim colIndex As Long    
colIndex = Application.Match(colName, Range(Cells(rowIndex, 1), Cells(rowIndex, 100)), 0)
于 2013-01-08T10:43:17.850 に答える
0

worksheet.find (ワークシートはワークシートです) を使用し、その範囲オブジェクトに行範囲を使用します。例として、worksheet.rows(rowIndex) のように rangeobject を取得できます。

次に、必要なパラメーターを見つけて、それを見つける必要があります。私の記憶が正しければ、 find はデフォルトで最初の一致を返します。手元にエクセルがないので、自分で調べてください。

for ループを使用しないことをお勧めします。これは壊れやすく、find よりも時間がかかります。

于 2013-01-08T10:39:36.477 に答える