【发布时间】:2012-11-20 09:21:35
【问题描述】:
我有三列,A、B 和 C:
A 列包含名称、NAME1、NAME2 等。
B 列仅包含值“YES”或“NO”。
假设 C 列包含 A 列中 B 列中值为“YES”的名称。
我可以说,只要 B 列中的值为“YES”,将值从 A 列复制到 C 列。很简单:
C1=IF(B1="YES",A1,"")
但这将包括空白单元格,我不想这样做。所以我想我正在寻找一种方法来复制 A 列中所有 B 列中值为“YES”的名称,并将它们粘贴到 C 列中,跳过空白。
我确实找到了一个 VBA 项目,它为列中的所有单元格着色具有特定值。我不确定如何将其编辑为我需要的内容。这是我到目前为止提出的代码。
问题
1) 运行时错误 '1004' 应用程序定义或对象定义的错误
2) 从 A 列复制
3) 检查并删除NewRange中的重复项
编辑 1:在代码中添加了注释行
编辑 2:将 NewRange 更改为从具有偏移量的 A 列(由于运行时错误而未经测试)EDIT 3:从一张表复制代码与粘贴到另一张表的代码分开
EDIT 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
【问题讨论】: