excel - 将一张表中的数据范围作为值复制到另一张表中,直到出现特定值
问题描述
在下面的代码中,我需要从“合格输出”中复制一个范围,并将其作为值插入“输出”中。
它有效,但我需要代码在 A 列开始包含值零 (0) 时停止复制范围。
有没有聪明的方法来做到这一点?希望你们能帮助我。
Sub Copy_to_output()
Worksheets("Output for qualifying").Range("A2:A400").Copy
Worksheets("Output").Range("A9").PasteSpecial Paste:=xlPasteValues
Worksheets("Output for qualifying").Range("B2:H400").Copy
Worksheets("Output").Range("E9").PasteSpecial Paste:=xlPasteValues
Worksheets("Output for qualifying").Range("J2:K400").Copy
Worksheets("Output").Range("L9").PasteSpecial Paste:=xlPasteValues
Worksheets("Output for qualifying").Range("Q2:Y400").Copy
Worksheets("Output").Range("N9").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End Sub
解决方案
在您的情况下,我唯一能想到的就是使用Find方法。
因此,在您的代码中,找到第一个0
值,然后将其用作副本的行引用。这绝不是一种干净的操作方式,但会完成任务。
Sub Copy_to_output()
Dim lZeroRow As Long
lZeroRow = Worksheets("Output for qualifying").Range("A:A").Find(What:="0", LookIn:=xlValues, LookAt:=xlWhole).Row
Worksheets("Output for qualifying").Range("A2:A" & lZeroRow).Copy
Worksheets("Output").Range("A9").PasteSpecial Paste:=xlPasteValues
Worksheets("Output for qualifying").Range("B2:H" & lZeroRow).Copy
Worksheets("Output").Range("E9").PasteSpecial Paste:=xlPasteValues
Worksheets("Output for qualifying").Range("J2:K" & lZeroRow).Copy
Worksheets("Output").Range("L9").PasteSpecial Paste:=xlPasteValues
Worksheets("Output for qualifying").Range("Q2:Y" & lZeroRow).Copy
Worksheets("Output").Range("N9").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End Sub
推荐阅读
- excel - 使用 VBA Excel 过滤并选择特定时期的条目,例如 5 天
- excel - 如何使用 PowerShell 将 Excel 工作簿文件名复制到单元格中?
- wpf - ListBoxItem 在 Style 中设置 EventSetter
- java - 在本地网络的 IIS 中部署的 Web 应用程序中浏览缓慢,而数据由桌面应用程序提供
- sql - sql防止带触发器的双重预订
- android - 使用 Delphi FMX 将声音作为 Android 服务播放
- npm - 为什么 NPM 包名限制为 214 个字符?
- onnx - 将 caffe_xilinx 模型转换为 onnx 时出错
- angular - 如何在操作成功后获得实际的 HTTP 响应
- javascript - 从 Vue.js3 中的 JSON 获取数据的动态相关下拉列表