excel - Excel VBA遍历列以将非空白复制并粘贴到其他3列?
问题描述
我是 Excel VBA 的新手,遇到了障碍。运行此程序时我没有收到任何错误,我什至不确定从哪里开始......
我想搜索 C 列,如果有非空白将该值复制到同一工作表的列(D、G、I)。我将在第 4 行开始搜索。
我试过单步执行代码,我很确定我的错误是 currVal = ws.Cells(i, "c")。当我逐步完成时,Excel 表上没有任何反应(没有复制或粘贴单元格)。
非常感谢任何帮助!我整个上午都在看这个。
Sub Copy()
Dim lastC As Integer
Dim i As Integer
Dim j As Integer
Dim currVal As String
Dim ws As Worksheet
Set ws = ActiveSheet
lastC = ws.Cells(Rows.Count, 1).End(xlUp).Row
For i = 4 To lastC
currVal = ws.Cells(i, "c")
If ws.Cells(i, 1).Value <> "" Then
currVal = ws.Cells(i, "D")
currVal = ws.Cells(i, "G")
currVal = ws.Cells(i, "I")
End If
Next i
End Sub
实际结果是什么都没有发生(至少我可以看到)并且没有错误给我一个开始寻找的地方!
预期结果会将其复制到 3 个附加列中。结果是一个实际的公式。这个公式是我需要复制的。
5/27/2019 9:39 --- 价值
='15_2019-02_003.CSV'!$A$2 -- 公式
一旦从原始 CSV 文件中提取值,我已经解决了公式更新和删除对 CSV 文件的引用的问题。此代码的目的只是搜索空白和复制/粘贴。Excel WS图片
解决方案
添加到评论中,这就是我编写特定代码的方式,也许它会有所帮助:
Sub Copy()
Dim ws As Worksheet: Set ws = ActiveSheet
Dim lastC As Long: lastC = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
Dim R As Long 'I like to use R (rows) & C (cols), just because makes it more readable (for me)
For R = 4 To lastC
With ws
If .Cells(R, "A").Value <> "" Then
.Cells(R, "D") = .Cells(R, "C").Value
.Cells(R, "G") = .Cells(R, "C").Value
.Cells(R, "I") = .Cells(R, "C").Value
End If
End With
Next R
End Sub
PS:我更喜欢数字而不是字母作为.Cells
参考,但在这种情况下使用字母是可以理解的。只是为了最佳实践 - 可读性,不应该混合它们。
推荐阅读
- javascript - 将已添加到 Google Drive 的图片链接插入到 Google 表格中
- python - 我如何在 django 模板中链接我的列表视图和详细信息视图,这样当我单击列表时,它会向我显示详细信息
- html - 我怎样才能用一些 100vh 部分做一个固定的标题?
- python - 有选择地将列转换为行
- android - Gradle 配置需要几秒钟以上的时间
- javascript - 如何处理客户端应用程序的代码签名?
- java - JavaFX 画布重绘不执行任何操作
- react-native - 如何在胜利原生中使用自己的数据键而不是默认用于绘制图表的 x 和 y
- java - 如何通过命令行编译和运行java maven项目?
- ios - SKAudioNode 是否有等效的 isPlaying()?