gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 08:10:11 26 4
gpt4 key购买 nike

我想在 Excel Office 2010 中创建宏或公式。

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

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

我找到了这个公式:=IF(ISBLANK(B1);"";"YOUR VALUE HERE")

但是当我尝试使用它时,我遇到了这个问题:当为 false 时,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

关于vba - Excel:如果 B 列或 C 列中的单元格为空,则清除 A 列单元格中的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41889845/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com