Excel:清除A列的单元格中的内容如果B列中的单元格或C为空

我想在Excel 2010中创buildmacros或公式。

如果列B或列C中的单元格为空,则清除列A中的内容。如果列B或列C中的单元格不为空,则不要清除A中的内容。

我有一个表格,范围从A1到C10,我想检查单元格B1:B10和C1:C10的值。

我发现公式: =IF(ISBLANK(B1);"";"YOUR VALUE HERE")

但是当我尝试使用它时,我有这个问题:当错误时,A1中的内容是0的变化。

第一次使用这个代码来纠正所有的数据(它是删除数据在列A中,你不会恢复),
您只需将SheetName更改为您的工作表的名称:

 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