Excel スプレッドシートから 1 行分のデータを抽出し、別のシートに転送する必要があります。一連のダッシュ (- - - - -) を検索し、ダッシュの 2 行下にあるデータ行を抽出する必要があります。
答え1
Excel 検索 構文を見つける
Dim rFound を範囲として
ここで、「expression」は有効な範囲オブジェクトです (例: Range("A1:A100")、Columns(2) など)。また、Find メソッドを使用するたびに、Range オブジェクトが返されます。
式.Find(What、After、LookIn、LookAt、SearchOrder、SearchDirection、MatchCase、MatchByte、SearchFormat)
Dim rFound As Range エラー時に再開 次へ
With ActiveWorkbook.ActiveSheet
Set rFound = .Columns(1).Find(What:="- - - - -", After:=.Cells(1, 1), LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
On Error GoTo 0
If Not rFound Is Nothing Then
Match = rFound.Address
MsgBox (rFound.Offset(2, 0))
End If
End With
答え2
これには Power Query アドインを使用します。Excel テーブルからデータを読み取ることができます。
2 つのクエリを作成します。最初のクエリでは、インデックス列 (行番号) を追加し、ダッシュで行をフィルターします。次に、単純な計算列を追加します: [Index] + 2。このクエリでは、テーブルを出力する必要はありません。
2 番目のクエリはベース テーブルから開始し、"[インデックス] + 2" 列と内部の結合タイプ (一致のみを保持) を使用して最初のクエリと結合します。このクエリは、新しいテーブルを Excel に出力します。
Power Query UI をクリックするだけで、ほとんどすべてを構築できます。必要な数式は非常にシンプルです[Index] + 2
。