首页 > 解决方案 > 如何使用VBA将包含某些文本的行复制到另一个工作表

问题描述

我正在尝试编写一个宏,如果该行中的一个单元格包含来自 C 列的文本(例如:孟买、德里等),则该行复制该行。

例如,如果有 30 行,但 C 列中只有 15 行包含文本(孟买和德里)。我想复制这 15 行并将它们粘贴到“Sheet2”中,我正在使用下面的代码。但是它只复制“孟买”。我需要 for 循环遍历同一列并复制“Delhi”。

Sub test()
Dim lastrow As Long, erow As Long
lastrow = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
For i = 7 To lastrow
If Worksheets("Sheet1").Cells(i, 3) = "Mumbai" Then
Worksheets("Sheet1").Cells(i, 1).copy
erow = Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row
Worksheets("Sheet1").Paste Destination:=Worksheets("Sheet2").Cells(erow + 1,1)
Worksheets("Sheet1").Cells(i, 3).copy
Worksheets("Sheet1").Paste Destination:=Worksheets("Sheet2").Cells(erow + 1,2)
End If
Next i
End Sub

请让我知道如何在上面的代码中使用 And 函数。或以任何其他方式将其复制到 sheet2 中。谢谢你。

标签: excelvba

解决方案


-尝试做一个for循环

- 从表 1 到表 2 的示例副本

Dim i As Long
Dim sh As Worksheet
dim sh2 As worksheet
Set sh = ThisWorkbook.Sheets("Sheet1")
Set sh2= ThisWorkbook.Sheets("Sheet2")
For i = 1 To Application.CountA( sh.Range("C:C"))

- 通过定义 if 语句,您可以控制复制的值

- 在循环中创建一个 if 语句来控制值是否为空

- 使用循环值引用单元格

-复制 :)

if sh.Range("C" & i).Value <> "" then

sh.Range("C" & i).Copy (sh2)

end if

Next i

推荐阅读