我一直負責從奇怪/格式不正確的Excel表格中提取數據。有太多的數據需要手動複製,所以我試圖使用宏。我對VBA不是很熟練,但我知道一點(可能剛好足以打破某些東西:))。Excel宏將格式不正確的數據複製到表中
我現在只在一張紙上工作,但有幾張紙,都是用相同的方式格式化的。以下是源數據的片段: 我突出顯示了我需要複製的單元格。其餘數據不重要,不需要提取。
正如你可以看到,源數據未格式化爲傳統的行和列,至少可以這樣說。
****編輯:****我更新了我的代碼。我意識到數據被格式化爲數據中的行之間有相同數量的空間,我需要的是14。我現在有一個Do While Loop,每次將行索引增加14以移至下一個記錄。
此代碼有效,但我正在討論這個正確的方式?我將需要重複這個過程約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來獲得更持久的東西。也就是說,寫這樣的東西可以減少勞動時間和點擊按鈕的滿意度非常高。 –
謝謝我從來沒有真正回答過我自己的問題,所以我不確定它是如何工作的。只要它能讓我回答,我會立即回答。像這樣的問題和解決方案正是我喜歡編程的東西。 –