arrays - 使用数组重新组织数据
问题描述
我有需要在数组或类似的东西中缩短的代码,因为它需要很长时间才能运行。
我有一张复印纸和粘贴纸。
表格被复制到复制表中,宏读取每列的标题并将其粘贴到正确位置的粘贴表中。所以它基本上将数据重新组织到它可以与其他表对齐。
我有 20 列被匹配、复制并粘贴到复制表中的粘贴表。
ABC = WorksheetFunction.Match("ABC", Rows("1:1"), 0)
DEF = WorksheetFunction.Match("DEF", Rows("1:1"), 0)... ETC.
Sheets("COPY").Columns(ABC).copy Destination:=Sheets("PASTE").Range("C1")
Sheets("COPY").Columns(DEF).copy Destination:=Sheets("PASTE").Range("C2")
解决方案
对列标题标签和目标使用变量数组。
dim h as long, hdrs as variant, hnum as variant
hdrs = array("ABC", "C1", "DEF", "C2")
with workSheets("COPY")
for h=lbound(hdrs) to ubound(hdrs) step 2
hnum = application.Match(hdrs(h), .Rows("1:1"), 0)
if not iserror(hnum) then
.Columns(hnum).copy Destination:=workSheets("PASTE").Range(hdrs(h+1))
end if
next h
end with
显然,您不会覆盖之前的粘贴操作,但这会遵循您的原始示例代码。小心复制完整的列;您将无法粘贴到不是另一个完整列的任何目标(例如,作为目标的 C2 是一个完整列的单元格)。
如果目标是连续列,您可以将一个目标偏移h列。
我通过将 application.match 返回到一个变体来对不匹配进行一些错误控制。
推荐阅读
- c++ - 游戏循环设计
- python - Pydub 从队列中播放
- c# - ASP.NET Core 配置方法不会提前结束?
- python - 为什么我的代码中出现“NoneType”对象没有属性“days_count”这个错误
- cobol - COBOL 输出一个空白文件而不是预期的输出
- javascript - 通过代理加载图像时,html2canvas 加载图像时出错
- python - 更新 Pyspark 中地图类型列的结构化值
- google-api - Google GET /drive/v2/about 容量不正确
- python - Plotnine 主题 element_blank() 似乎不起作用 - 也许我没有正确导入包?
- javascript - 为什么 webpack 找不到 scss 文件