gpt4 book ai didi

excel - 根据旁边单元格中的文本复制和粘贴数据

转载 作者:行者123 更新时间:2023-12-04 10:13:06 25 4
gpt4 key购买 nike

我希望代码检查“A3:AAA3”范围内的每个单元格中的特定文本。如果单元格包含该文本,我希望它将右侧单元格中的文本复制到上面的两行(参见下面的说明):

enter image description here

复制的文本将是一个日期。

我已经有一段代码用这个文本标识每一列并设置列宽:

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运算符(operator)。

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 (见 How to avoid using Select in Excel VBA。)

请注意,Excel 不知道该范围在哪个工作表中 Range("A3:AAA3").Cells更好地指定工作表,如 ThisWorkbook.Worksheets("MySheet").Range("A3:AAA3").Cells
最后,在所有情况下,如果您使用 F8 逐步调试代码会很有帮助,这样您就可以查看代码在每一步中的作用,并调查变量的值以查看错误的确切位置。

无关:

我什至更喜欢以下风格:
c.Offset(ColumnOffset:=1).Copy Destination:=c.Offset(RowOffset:=-2)

读起来更直观。

关于excel - 根据旁边单元格中的文本复制和粘贴数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61230280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com