excel - 根据旁边单元格中的文本复制和粘贴数据
问题描述
我希望代码检查“A3:AAA3”范围内的每个单元格中的特定文本。如果单元格包含该文本,我希望它将右侧单元格中的文本复制到上面的两行(参见下面的说明):
复制的文本将是一个日期。
我已经有一段代码用这个文本标识每一列并设置列宽:
Dim c as Range
For Each c In Range("A3:AAA3").Cells
If c.Value = "TEXT" Then
c.EntireColumn.ColumnWidth = 4
End If
Next c
如果单元格已被选中,我可以使用复制和粘贴:
Dim s As Range
Set s = Selection.Cells(1)
s.Offset(0, 1).Copy
s.Offset(-2, 0).PasteSpecial xlPasteAll
而且我觉得我应该能够将两者组合成如下所示的内容,以便它选择带有文本的单元格,并复制并粘贴其旁边的单元格,然后循环到下一个单元格(如下所示?) ,但我所有的尝试都没有奏效——它没有出现错误消息,只是没有做任何事情。
Dim c As Range
For Each c In Range("A3:AAA3").Cells
If c.Value = "TEXT" Then
c.Select
c.Offset(0, 1).Copy
c.Offset(-2, 0).PasteSpecial xlPasteAll
End If
Next c
想法?我确定这是一个非常简单的解决方案,但我有点卡住了。
解决方案
将c.Value = "TEXT"
检查该值是否准确 TEXT
,但在您的示例中,1 TEXT
它只是. 所以我们需要使用占位符和运算符。 TEXT
like
Dim c As Range
For Each c In Range("A3:AAA3").Cells
If c.Value Like "*TEXT*" Then
c.Offset(0, 1).Copy Destination:=c.Offset(-2, 0)
End If
Next c
请注意,您可以在一行中复制/粘贴。
而且您不需要c.Select
(请参阅如何避免在 Excel VBA 中使用 Select。)
请注意,Excel 不知道该范围在哪个工作表中Range("A3:AAA3").Cells
更好地指定工作表,例如ThisWorkbook.Worksheets("MySheet").Range("A3:AAA3").Cells
最后,在所有情况下,如果您使用 F8 逐步调试代码会很有帮助,这样您就可以查看代码在每一步中的作用,并调查变量的值以了解错误的确切位置。
无关:
我什至更喜欢以下风格:
c.Offset(ColumnOffset:=1).Copy Destination:=c.Offset(RowOffset:=-2)
读起来更直观。
推荐阅读
- python - 如何找到离散傅里叶变换的幅度?
- laravel - 如何使用 vuejs 从 SPA 访问 /storage -laravel- 中的图像
- sql - T-SQL 中的数据透视表分区
- sql - 如果为假,则忽略某些行
- protocol-buffers - 微服务架构中 protobuf 文件的组织
- java - 使用户只能更改他在 JAX-RS 和 Jersey 上拥有的数据的最佳实践
- msbuild - 由于缺少程序集,在 VS2017 中正确构建的项目在 TFS2017 构建服务器中失败
- pyspark - 在 Spark 2.2.1 中加载 CrossValidator 模型
- java - 如何在 Github API 中使用个人访问令牌?
- javascript - Extracting words from a space (comma) separated string