我想在excel office 2010中创建宏或公式。
如果B列或C列中的单元格为空,则清除A列中的内容。如果B列或C列中的单元格不为空,则不清除A中的内容。
我有一个范围从A1到C10的表,我想检查单元格B1的值:B10和C1:C10。
我找到了公式:=IF(ISBLANK(B1);"";"YOUR VALUE HERE")
但是当我尝试使用它时,我遇到了这个问题:当错误时,A1中的内容更改为0.
答案 0 :(得分:3)
第一次使用此代码更正所有数据(它是您无法恢复的col A中的擦除数据),您只需将SheetName
更改为工作表的名称:< / p>
Sub testMR()
Dim i As Long
Dim LastRow As Long
Dim wS As Worksheet
Set wS = ThisWorkbook.Sheets("SheetName")
LastRow = LastRow_1(wS)
For i = 1 To LastRow
With wS
If .Cells(i, 2) <> vbNullString Or .Cells(i, 3) <> vbNullString Then
Else
'B and C empty
.Cells(i, 1) = vbNullString
End If
End With 'wS
Next i
End Sub
Public Function LastRow_1(wS As Worksheet) As Double
With wS
If Application.WorksheetFunction.CountA(.Cells) <> 0 Then
LastRow_1 = .Cells.Find(What:="*", _
After:=.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
Else
LastRow_1 = 1
End If
End With
End Function
将其放在您希望自动执行该行为的工作表模块中:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Rows.Count > 1 Then Exit Sub
If Application.Intersect(Target, Me.Range("B:C")) Is Nothing Then Exit Sub
With Me
If .Cells(Target.Row, 2) <> vbNullString _
Or .Cells(Target.Row, 3) <> vbNullString Then
Else
'B and C empty
.Cells(Target.Row, 1) = vbNullString
End If
End With 'Me
End Sub