将行从一个Excel文件复制到另一个,并在右列中分配row.cells

我一直在尝试复制一个范围的行,每个4列,到一个新的csv文件。 我希望细胞分配正确。 这些文件如下所示。

在这里输入图像描述

因此,需要将“代码”,“名称”,“姓氏”,“数量”单元复制并粘贴到新文件的右侧单元格中。

  • “代码”是等效的“ID”
  • “名称”位于FileA的第二列,但位于FileB的第三列。
  • “姓氏”在FileA的3d列中,但是在FileB的第二列中。

所以,例如FileA的第二行将被粘贴到FileB中,如下所示:

在这里输入图像说明

UPD :我使用此代码来select行的范围并将其粘贴到新文件。

Sub ExportRangetoFile() Dim Rng As Range Dim WorkRng As Range Dim lRow As Long, lCol As Long Dim xFile As Variant Dim xFileString As String On Error Resume Next lRow = Range("A" & Rows.Count).End(xlUp).row lCol = Cells(1, Columns.Count).End(xlToLeft).Column Set Rng = Range(Cells(lRow, 1), Cells(lRow, lCol)) ActiveSheet.Copy ActiveSheet.Cells.Clear Rng.Copy Application.ActiveSheet.Range(Cells(lRow, 1), Cells(lRow, lCol)) Columns("C:C").Cut: Columns("B:B").Insert Shift:=xlToRight Set xFile = CreateObject("Scripting.FileSystemObject") ActiveWorkbook.SaveAs Filename:="C:\Users\User\Desktop\Range.csv", FileFormat:=xlCSV, CreateBackup:=False End Sub 

我想要更改代码,以便在新文件中创build标题并在右列中分配每行的单元格。

UPD:我的问题是我的代码需要更改。 在新文件中,我只得到一行,而不是全部。 作为第一步,这里有一些东西需要改变:

 ActiveSheet.Copy ActiveSheet.Cells.Clear Rng.Copy Application.ActiveSheet.Range(Cells(lRow, 1), Cells(lRow, lCol)) 

然后我将需要search如何在新的csv文件中创build标题。

我试着修改一下你的代码,最后用这个macros来实现你想要的function,同时简化了你发布的代码片段。 如果我以某种方式误解了你的要求,或者有什么需要进一步的解释,请不要犹豫。

 Option Explicit Sub ExportRangetoFile() Dim cpFromRng As Range, cpToRng As Range Dim cpFromWB As Workbook, cpToWB As Workbook Dim lRow As Long, lCol As Long Set cpFromWB = ActiveWorkbook ' Set range to copy With cpFromWB lRow = Range("A" & Rows.Count).End(xlUp).Row lCol = Cells(1, Columns.Count).End(xlToLeft).Column ' I assume the top left cell you want to copy from is A1, if that is wrong, change the line below back Set cpFromRng = Range(Cells(1, 1), Cells(lRow, lCol)) End With ' Create new workbook Set cpToWB = Workbooks.Add Set cpToRng = cpToWB.ActiveSheet.Range("A1") ' Copy everything over to the new workbook cpFromRng.Copy Destination:=cpToRng ' Shuffle columns around cpToWB.ActiveSheet.Columns("C:C").Cut cpToWB.ActiveSheet.Columns("B:B").Insert Shift:=xlToRight ' Save as CSV-file ActiveWorkbook.SaveAs Filename:="C:\Users\a245401\Range.csv", FileFormat:=xlCSV, CreateBackup:=False End Sub