【发布时间】:2021-02-04 05:42:44
【问题描述】:
我已经能够编写一个执行以下操作的宏:
-
将 A 列复制到 B 列,格式为“mm-dd-yyyy”。
-
将 A 列复制到 C 列,格式为“h:mm”。
现在,我需要执行以下操作,但我不知道如何...
- 将新创建的列 B、C 和新列右侧的每个单独的列复制到各自的工作簿中。我希望根据“当前工作表标题”和每个单独的第 2 行名称来命名工作簿。例如,我附上了一张工作簿数据的图片以及一张最终产品的样子。
我认为代码必须执行以下操作:创建一个基于范围的列变量 X 和第 2 行。然后声明对于每一列 X,如果第 2 行包含一个值,则复制 B 列、C 列和当前X 列。然后将 (3) 列(B、C 和列变量 X)粘贴到新工作簿中,并根据“当前工作表标题 + 当前 X 列第 2 行的单元格名称”为工作簿命名。
感谢任何人的帮助,如果我说的内容令人困惑,请告诉我,我会尽力解决。
图片:
数据: Data Image
最终产品 1: Final Product Image 1
最终产品2:Final Product Image 2
当前宏:
Sub Time_Series()
Dim CurrentSheet As Worksheet
With CurrentSheet
Range("A:A").Copy
Range("B:C").Insert
Range("B:B").NumberFormat = "mm-dd-yyyy;@"
Range("C:C").NumberFormat = "h:MM;@"
End With
End Sub
【问题讨论】:
-
我认为只是格式化整个列的 FYI 会占用大量文件大小,因此您可能需要更具体地定义要设置格式的范围,例如
Range(Range("B2"), Range("B2").End(xlDown)).NumberFormat = "mm-dd-yyyy;@",格式化也不会删除未使用的日期部分,因此,如果您排序/分组等,您通过 for at 掩码看到的只是实际单元格内容的一部分。 -
在解决问题时,您的逻辑似乎很可靠,请尝试实施。
set ws = Thisworkbook.worksheets.add将为您创建一个新工作簿,使用Range(Range("B2"), Range("B2").End(xlDown)).copy destination:= ws.range("a1")之类的逻辑将影响复制 -
我无法理解,因为您所解释的内容与图片显示的内容不符。仅举一个例子,您谈到将 A 列的日期复制/粘贴到 B 列中,但在图像中,我看到您将它们粘贴到另一个工作表的 A 列中。你知道工作表和工作簿的区别吗? .. 解释时要小心,如果你想让我们理解,每一个字都很重要。简化并消除所有废话。
-
只是想说我感谢大家的时间。理想情况下,我希望能够将数据粘贴到新工作簿中,而不是工作表中,因为稍后我会将各个工作簿导入到另一个程序中。前两个步骤创建列 B 和 C。目标是然后将列 B、C 和变量 X 复制到每个变量 X 的新单独工作簿中。示例将列 (B、C、D) 复制到新工作簿中并保存新的工作簿工作簿为“当前工作表标题-DMA-1”。下一个示例将 Column (B,C,E) 复制到名为“Current Sheet Title-DMA-2”的新工作簿中。以此类推。