我有三列,A、B 和 C:
A 列包含名称、NAME1、NAME2 等
。B 列仅包含值“YES”或“NO”。
假设 C 列包含 A 列中 B 列中值为“YES”的名称。
我可以说,只要 B 列中的值为“是”,将值从 A 列复制到 C 列。非常简单:
C1=IF(B1="YES",A1,"")
但这将包括我不想要的空白单元格。所以我想我正在寻找一种方法来复制 A 列中所有 B 列中值为“YES”的名称,并将它们粘贴到 C 列中,跳过空白。
我确实找到了一个 VBA 项目,它用特定的值为列中的所有单元格着色。我不确定如何将其编辑为我需要的内容。这是我到目前为止提出的代码。
问题
1)运行时错误“1004”应用程序定义或对象定义错误
2)从 A 列复制
3)检查并删除 NewRange 中的重复项
编辑 1:在代码中添加了注释行
编辑 2:将 NewRange 更改为从具有偏移量的 A 列(由于运行时错误而未测试)
编辑 3:用于复制表格的代码与用于粘贴到另一张工作表的代码分开
编辑 4:添加来自用户@abahgat 的更正
编辑 5:删除重复项
Sub RangeCopyPaste()
Dim cell As Range
Dim NewRange As Range
Dim MyCount As Long
MyCount = 1
'--> Loop through each cell in column B
'--> Add each cell in column A with value "YES" in column B to NewRange
For Each cell In Worksheets("Sheet1").Range("B1:B30")
If cell.Value = "YES" Then
If MyCount = 1 Then Set NewRange = cell.Offset(0,-1)
Set NewRange = Application.Union(NewRange, cell.Offset(0,-1))
MyCount = MyCount + 1
End If
Next cell
'--> Copy NewRange from inactive sheet into active sheet
NewRange.Copy Destination:=activesheet.Range("C1")
'--> Remove Duplicates
activesheet.Range("C1:C30").RemoveDuplicates
End Sub