【发布时间】:2022-11-25 03:42:04
【问题描述】:
这是我每天必须做的事情,随着时间的推移,它开始在 *** 中疼痛。
我需要编写一个代码,该代码基于 A 列中的值,将同一行中 B:I 列中的值复制到另一个工作簿。数据源将始终相同。我在 A 列中最多有 30 个工作簿/30 个唯一值。
如果单元格 A1 中的值 =“苹果”。我需要将范围 B1:I1 复制到名为 apples 的工作簿。 如果单元格 A2 中的值 = "Oranges",我需要将范围 B2:I2 复制到名为 oranges 的工作簿中...
等等等等。
目标工作簿位于另一个文件夹中。我需要在目标工作簿的 A 列中找到最后一行,然后立即插入我的源区域。我基本上需要用我复制的数据创建新行。
任何帮助将不胜感激。
下面是我尝试自己编写的代码,但不幸的是没有运气。循环仅为一个工作簿创建。
编辑。
A 列中的值与它们应复制到的工作簿的名称不对应。格式为 .xlsx 的工作簿
A 列:I 是源工作表中唯一的列。
我将从源中的 B:I 复制到目标中的 A:H。所有目标工作簿的格式都相同。在复制到目标工作簿时,我需要插入额外的行,然后将数据复制进去。
我需要始终复制到目标工作簿的第一个选项卡中。全部称为“所有行业”
将有一个或多个记录(行)被复制到每个目标工作簿。
非常感谢,
Sub copying()
Dim wsIn As Worksheet, ws4 As Workbook, ws5 As Workbook, ws6 As Workbook, ws7 As Workbook, ws8 As Workbook, ws9 As Workbook, ws10 As Workbook, ws11 As Workbook, ws12 As Workbook, ws13 As Workbook
Dim ws14 As Workbook, ws15 As Workbook, ws16 As Workbook, ws17 As Workbook, ws18 As Workbook, ws19 As Workbook, ws20 As Workbook, ws21 As Workbook, ws22 As Workbook, ws23 As Workbook, ws24 As Workbook, ws25 As Workbook, ws26 As Workbook, ws27 As Workbook
Dim wsE1 As Workbook, wsE2 As Workbook, wsE3 As Workbook, wsE4 As Workbook, wsE5 As Workbook, wsE6 As Workbook
Dim wkExport As Workbook
Dim fn4 As String, fn5 As String, fn6 As String, fn7 As String, fn8 As String, fn9 As String, fn10 As String, fn11 As String, fn12 As String, fn13 As String, fn14 As String, fn15 As String, fn16 As String, fn17 As String, fn18 As String, fn19 As String, fn20 As String
Dim fn21 As String, fn22 As String, fn23 As String, fn24 As String, fn25 As String, fn26 As String, fn27 As String
Dim fnE1 As String, fnE2 As String, fnE3 As String, fnE4 As String, fnE5 As String, fnE6 As String
Set wsIn = ThisWorkbook.Worksheets("Ready_data")
fn5 = ThisWorkbook.Path & Application.PathSeparator & "workbook5.xlsx"
wsIn.Range("A2:I" & ws5.Rows.Count).Clear
Dim lrowIn As Long
lrowIn = wsIn.Range("A1").CurrentRegion.Rows.Count
Dim lrowOut As Long
Dim i As Long
For i = 2 To lrowIn
If wsIn.Range("A" & i).Value = "workbook5" Then
Set wkExport = Workbooks.Open(fn5)
lrowOut = ws5.Range("A1").CurrentRegion.Rows.Count + 1
wsIn.Range("B" & i & ":I" & i).Copy ws5.Cells(lrowOut, 1)
End If
Next iM
End Sub
我已经尝试了很多 youtube 视频并浏览了 stackoverflow 中的所有建议,但没有什么与我需要的完全相同。
【问题讨论】:
-
工作簿名称是否始终是 A 列中的值,后跟“.xlsm”?
-
好问题。其实没有。如果我在 A1 中有“Apples”,工作簿将被称为“So So Apples”......如果这有意义的话
-
...它不会,除非你的意思是
So So Apples.xlsx和PearsSo So Pears.xlsx...等等。A:I列是源工作表中唯一的列吗?你会从源中的B:I复制到目标中的A:H吗?是否会有多个记录(行)要复制到每个目标工作表?所有目标工作表是否都具有相同的(制表符)名称以及它是哪一个(例如Sheet1)?如果不是,我们如何识别它们(例如第一个工作表)?我们不必问这些问题,您应该通过编辑您的帖子来提供此信息和任何其他信息。随意这样做。 -
编辑添加,抱歉,我是该平台的新手,仍在学习究竟需要什么。
-
我们如何知道要复制到哪个工作簿?目标工作簿是否包含字符串,例如苹果还是橘子?目标路径是否以某种方式与源路径相关,例如子文件夹
ThisWorkbook.Path & "\" & Fruits还是像C:\Test这样的随机路径?