私は、Excelシートからデータを抜粋することを妙に/不適切にフォーマットしています。手動でコピーするにはあまりにも多くのデータがあるので、私はマクロを使用しようとしています。私はVBAにはあまり熟練していませんが、私はちょっとだけ知っています。Excel形式のデータをテーブルにコピーしていない
私はちょうど1枚のシートで作業していますが、いくつかのシートがあり、すべて同じようにフォーマットされています。ここに、ソースデータのようなスニペットがあります: 私はコピーが必要なセルを強調表示しました。残りのデータは重要ではなく、抽出する必要はありません。
あなたが見ることができるように、ソースデータは、控えめに言っても、伝統的な行と列としてフォーマットされていません。
私は新しいシートに設定したテーブルにこのデータをコピーしています。
****編集:****私のコードを更新しました。私は、データが必要なデータの行間に同じ量のスペースがあるところにフォーマットされていることに気付きました。正確には14です。私は今、次のレコードに移動するたびに行インデックスを14ずつインクリメントするDo While Loopを持っています。
このコードは機能しますが、これについて正しい方法はありますか?このプロセスを約50枚繰り返す必要があります。そのうちのいくつかは1000以上のレコードを持っています。
Sub CopyData()
Dim SourceSheet As Worksheet
Dim DestSheet As Worksheet
Dim DestRow As Long
Dim i As Integer
i = 0
Set SourceSheet = Sheets("Sheet1")
Set DestSheet = Sheets("Data")
Do While i < 100
DestRow = DestSheet.Cells(Rows.Count, "A").End(xlUp).Row + 1
SourceSheet.Cells(2 + i, 1).Copy
DestSheet.Range("A" & DestRow).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
SourceSheet.Cells(2 + i, 2).Copy
DestSheet.Range("D" & DestRow).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
SourceSheet.Cells(3 + i, 2).Copy
DestSheet.Range("E" & DestRow).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
SourceSheet.Cells(4 + i, 2).Copy
DestSheet.Range("F" & DestRow).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
SourceSheet.Cells(2 + i, 7).Copy
DestSheet.Range("C" & DestRow).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
SourceSheet.Cells(5 + i, 7).Copy
DestSheet.Range("G" & DestRow).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
SourceSheet.Cells(14 + i, 2).Copy
DestSheet.Range("B" & DestRow).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
i = i + 14
Loop
End Sub
私はこれを答えとしてマークします。あなたが自分で実行するワンオフのエラーチェックに関して、私は気にしません。初心者の方にはこのような気持ちがありますので、VBAをより永続的なものに使用していただければ幸いです。つまり、ボタンをクリックするだけで労働時間が短縮されるようなことを書いて満足することは素晴らしいことです。 –
ありがとう私は自分の質問に実際に答えたことはありませんでした。私はそれができるようになるとすぐに答えとしてマークします。このような問題と解決策は、私がプログラミングについて愛しているものです。 –