Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba Excel-如果为空,如何显示信息或转到下一列_Vba_Excel_Countif - Fatal编程技术网

Vba Excel-如果为空,如何显示信息或转到下一列

Vba Excel-如果为空,如何显示信息或转到下一列,vba,excel,countif,Vba,Excel,Countif,所以这可能有点混乱 我想知道如何让excel显示一个单元格的文本,或者在原始单元格为空时移动到另一列 换句话说,如果A1有“Dog”,我希望它显示“Dog”。但是如果A1是空的,我希望它检查C1。如果C1中有“Cat”,我希望它显示“Cat”。如果C1是空的,我希望它检查E1…以此类推 这可能吗 谢谢 试试这样的方法: Option Explicit Sub A() Dim rng As Range, cell As Range Set rng = Range("A1:G2") Di

所以这可能有点混乱

我想知道如何让excel显示一个单元格的文本,或者在原始单元格为空时移动到另一列

换句话说,如果A1有“Dog”,我希望它显示“Dog”。但是如果A1是空的,我希望它检查C1。如果C1中有“Cat”,我希望它显示“Cat”。如果C1是空的,我希望它检查E1…以此类推

这可能吗


谢谢

试试这样的方法:

Option Explicit

Sub A()

Dim rng As Range, cell As Range  
Set rng = Range("A1:G2")  
Dim jump As Boolean  
jump = False  

For Each cell In rng  
If jump = False Then  
    If (cell.Value <> "") Then  
        MsgBox ("Contents of cell at row:" & cell.Row & "," & cell.Column & vbCrLf & "is:" & vbCrLf & cell.Value)  
    Else  
    'if A1 has "Dog", I want it to display "Dog". But if A1 is blank, I want it to check C1  
    jump = True  
    End If  
Else  
    jump = False  
End If  
Next cell  

End Sub
选项显式
子A()
变暗rng作为范围,单元格作为范围
设置rng=范围(“A1:G2”)
作为布尔值的Dim跳跃
跳转=错误
对于rng中的每个单元
如果jump=False,则
如果(cell.Value“”),则
MsgBox(“行:&cell.row&“,&cell.Column&vbCrLf&”处的单元格内容是:&vbCrLf&cell.Value)
其他的
'如果A1有“Dog”,我希望它显示“Dog”。但是如果A1是空的,我希望它检查C1
跳转=真
如果结束
其他的
跳转=错误
如果结束
下一个细胞
端接头

这是一种可能的方法。请记住,它不会在没有输入的情况下中断,因此它将在到达工作表末尾时抛出错误

Sub ShowText()
    Dim rngStart As Range
    Dim strResult As String

    Const OFFSET_VALUE As Integer = 2


    Set rngStart = ActiveSheet.Range("A1")
    strResult = ""

    Do
        strResult = rngStart.Value
        Set rngStart = rngStart.Offset(, OFFSET_VALUE)
    Loop While strResult = ""

    MsgBox strResult

End Sub
这似乎有效:

Range("A1").Select

Do While IsEmpty(Selection.Value)
Selection.Offset(0, 2).Select
Loop

MsgBox Selection.Value

我想每个人都有点想得太多了。根本没有理由使用VBA。如果
为空,只需结合使用Excel公式

=IF(ISBLANK(A1),IF(ISBLANK(C1),E1,C1),A1)

未经测试。我在用手机。至少应该说明这个想法。我也考虑过使用公式。我没有这么做的原因是,他在文章的结尾用了“诸如此类”。如果没有关于使用范围的更多信息,您将不得不捕获行中的每一个其他单元格。d列发生了什么?您要检查的是第一排吗?