2017-01-19 11 views
0

Excelシートを複数のシートに分割しようとしています。私が分割しようとしているシートにはたくさんのテーブルがあり、それらはそれぞれA列の各テーブルの後に表示される "-----"で区切られています。情報を抽出する方法を誰かが知っていますか? ----- "新しいシートに貼り付けますか?文字列を新しいシートにコピーしても構いません。 "-----"で区切られたシート上に10個のテーブルがある場合、それぞれが異なるテーブルを持つ10枚のシートが必要です。デリミタ値に基づいてExcelシートを複数のシートに分割する方法は?

繰り返し値の間で情報を抽出しようとした私の試みは一切役に立たなかったので、残念ながらコードはありません。私は実際には道に沿って個々のステップのためだけでも、アイデアを高く評価しています。

+0

何を試しましたか?あなたが試したコード/公式と、働いている/行っていないことを示してください。また、データ - >テキストを列に使用して、デリミタに基づいてデータを区切ってみることもできます。 – BruceWayne

+0

これは特に難しいことではありません。 'startRng = topOfSheet;ループ:nextRng = startRngから始まるパターンを見つけ、startRngとnextRngの範囲を新しいシートstartRng = nextRng.offset(1) 'にコピーします。ループがパターンが見つからなくなるまで続きます。これをコーディングを開始してください。ブロッキングの問題に直面した場合は、コードを貼り付けてください。お手伝いします。 –

答えて

2

これは動作するはずです。あなたの要件に応じてsearchStringを変更してください。最初のデータセットの新しいシートは作成されません。つまり、9枚の追加シートが作成され、元のシートは10枚目のシートになります。

Option Explicit 

Sub serachAndCopy() 
    Dim searchString As String 
    searchString = "---" 

    Dim lastRow As Integer, i As Integer 
    lastRow = 0 

    Dim thisSheet As Worksheet 
    Set thisSheet = Sheets("Sheet1") 

    Dim sh As Worksheet 

    For i = thisSheet.Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1 
     If (thisSheet.Range("A" & i) = searchString) Then 
      If lastRow = 0 Then 
       lastRow = i 
       Else 
       Sheets.Add After:=Sheets(Sheets.Count) 
       Set sh = ActiveSheet 
       thisSheet.Rows(i + 1 & ":" & lastRow).Copy Destination:=sh.Rows("1:1") 

       thisSheet.Rows(i + 1 & ":" & lastRow).Delete 
       lastRow = i 
      End If 
     End If 
    Next i 
End Sub 
+0

うわーありがとう!これはまさに私が必要としていたことでした。私は数週間前にVBAを学び始めたばかりなので、本当に助けてくれてありがとう – studiis

関連する問題