我有一个excel表,如果三列具有相同数据,我想删除第二和第三列。我可以写4.列,这些列的数据相同或不同,但是我不能先设置1. 2.或3.列数据
= IF((AND(A1 = B1; B1 = C1));“相同”;“不同”)
a b c
a b b
a a a
到
a b c
a b b
a
答案 0 :(得分:1)
您可以将其放入新模块中,但是该宏将在Active Sheet上运行:
Sub DeleteCells()
Dim intResponse, i As Integer
i = 1
intResponse = MsgBox("Are you sure you want " & _
"to delete the cells?", vbYesNo)
If intResponse = vbYes Then
Do While Cells(i, 1).Value <> "" 'does it one by one going down in the first column while the cell is not empty
If (Cells(i, 1) = Cells(i, 2)) And (Cells(i, 1) = Cells(i, 3)) Then
Cells(i, 2).Value = ""
Cells(i, 3).Value = ""
End If
i = i + 1
Loop
End If
End Sub
答案 1 :(得分:1)
可以使用公式,但比VBA乏味。例如,在E1中复制到G1,然后将E1:G1复制到合适的位置:
=IF(COUNTIF($A1:$C1,A1)<>3,A1,IF(COLUMN()=5,A1,""))
然后在顶部复制,粘贴特殊字符,值,并删除A:D列。
或者标记三个值相同的行(例如复制=COUNTIF(A1:C1,A1)
以适合),然后过滤该列以选择3
并清除ColumnsB:C中的值(而不是标题行)。