我正在尝试通过将4个excel文件合并为1个文件来创建一个文件。 这是相同的代码
Public Sub CommandButton1_Click()
Dim wb As Workbook
Dim row As Long
Dim i As Long
Dim currow As Long
Dim LastRow As Long
LastRow = Sheets("Sheet1").Cells(65536, 2).End(xlUp).row
Columns("O:O").Insert
Range("O1").Value = "Source"
For i = 1 To 4 Step 1
Sheets("Sheet1").Range("O2:O" & LastRow).Value = "Dump" & i
Set wb = Workbooks.Open("C:\Users\BV\Desktop\Excel" & "\Dump" & i & ".xlsx")
With wb.Sheets("Data")
If i = 1 Then
row = 1
Else
row = 2
End If
Do Until .Range("A" & row).Value = vbNullString
currow = currow + 1
For n = 0 To 13 Step 1
Me.Range("A" & currow).Offset(columnoffset:=n).Value = .Range("A" & row).Offset(columnoffset:=n).Value
Next n
row = row + 1
Loop
End With
wb.Close True
Next i
Fees_check
Set wb = Nothing
End Sub
Dump1,Dump2,Dump3和Dump4是源文件名。 我想添加另一列,在合并后提供源文件名,例如Dump1,Dump2等。 现在,我将所有行的值都获取为Dump4。 任何帮助表示赞赏。
谢谢
答案 0 :(得分:1)
您的问题是这一行:
Sheets("Sheet1").Range("O2:O" & LastRow).Value = "Dump" & i
每次循环时,您都用dump & i
将“ O2”中的值替换为最后一行,而在最后一次,只是用“ dump4”填充了整个列
因此,摆脱掉这一行,而使用CurrRow
变量来填充“ O”列,也许只需在实际跨数据移动的位中插入一行,就像这样:
For n = 0 To 13 Step 1
Me.Range("A" & currow).Offset(columnoffset:=n).Value = .Range("A" & row).Offset(columnoffset:=n).Value
Me.Range("O" & currow).Value2 = "Dump" & i ' INSERT THIS LINE
Next n
这是一个快速解决方案,我通常会一口气填写一个范围,但我认为您只需要处理少量数据就可以了。