Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.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 使用忽略false values子句的IF语句_Vba_Excel - Fatal编程技术网

Vba 使用忽略false values子句的IF语句

Vba 使用忽略false values子句的IF语句,vba,excel,Vba,Excel,我有一个excel数据列表,包括“是”和“否” 我需要一个IF语句,它只作用于值为“Yes”的单元格,并跳过值为“No”的单元格 对于上下文,if语句的'value if true'子句是一个indexmatchmatch,它需要在工作表中根据“Yes”或“No”返回一个值 我知道这可能有一个使用VBA的简单解决方案,所以如果任何人有一个基于excel的解决方案或基于VBA的解决方案,他们将同样有用 如果需要,我可以向正在使用的数据集添加列和行。尝试以下操作: Sub YesNo() Dim l

我有一个excel数据列表,包括“是”和“否”

我需要一个IF语句,它只作用于值为“Yes”的单元格,并跳过值为“No”的单元格

对于上下文,if语句的'value if true'子句是一个indexmatchmatch,它需要在工作表中根据“Yes”或“No”返回一个值

我知道这可能有一个使用VBA的简单解决方案,所以如果任何人有一个基于excel的解决方案或基于VBA的解决方案,他们将同样有用

如果需要,我可以向正在使用的数据集添加列和行。

尝试以下操作:

Sub YesNo()
Dim lRow As Long
Dim sht As Worksheet
Set sht = Worksheets("Tabelle1")

lRow = sht.Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To lRow
    If sht.Cells(i, 1).Value = "True" Then 'Modify Column
        'Your Code
    End If
Next i
End Sub
试试这个:

Sub YesNo()
Dim lRow As Long
Dim sht As Worksheet
Set sht = Worksheets("Tabelle1")

lRow = sht.Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To lRow
    If sht.Cells(i, 1).Value = "True" Then 'Modify Column
        'Your Code
    End If
Next i
End Sub
用VBA实现

假设在工作表中,您有

A   Yes
B   Yes
C   No
A   Yes
B   No
C   Yes
A   No
B   No
运行宏后,工作表2中只有在工作表1中有“是”的行。请根据您的要求修改代码

Sub g()
Dim lastRow As Long
Dim sheet As Worksheet
Set sht = Worksheets("Sheet1")
Set sht1 = Worksheets("Sheet2")

lRow = sht.Cells(Rows.Count, 1).End(xlUp).Row
Dim j As Long
j = 1
For i = 1 To lRow

    If sht.Cells(i, 2).Value = "Yes" Then
        sht1.Cells(j, 1).Value = sht.Cells(i, 1).Value
        j = j + 1
    End If
Next i
End Sub
用VBA实现

假设在工作表中,您有

A   Yes
B   Yes
C   No
A   Yes
B   No
C   Yes
A   No
B   No
运行宏后,工作表2中只有在工作表1中有“是”的行。请根据您的要求修改代码

Sub g()
Dim lastRow As Long
Dim sheet As Worksheet
Set sht = Worksheets("Sheet1")
Set sht1 = Worksheets("Sheet2")

lRow = sht.Cells(Rows.Count, 1).End(xlUp).Row
Dim j As Long
j = 1
For i = 1 To lRow

    If sht.Cells(i, 2).Value = "Yes" Then
        sht1.Cells(j, 1).Value = sht.Cells(i, 1).Value
        j = j + 1
    End If
Next i
End Sub

您自己做过哪些代码/研究?另外,对这个问题多做一点讨论也会有帮助。我自己也尝试过excel解决方案,但我的vba技能不能胜任这项任务,我尝试过,但失败了。这不管用吗<代码>=如果(A1=“Yes”,”)您自己尝试过哪些代码/研究?另外,对这个问题多做一点讨论也会有帮助。我自己也尝试过excel解决方案,但我的vba技能不能胜任这项任务,我尝试过,但失败了。这不管用吗
=如果(A1=“Yes”,”)
问题在于,如果存在错误值,我希望忽略它们,并在列表中查找下一个“Yes”,然后对其应用indexmatchmatch如果我理解正确,您有一个列值为“Yes”或“No”的行列表,如果值为“Yes”,则在下一列中您希望显示“indexmatchmatch”否则空白=如果(=“是”、“indexmatchmatch”和“”。您可以拖动所有行的公式。它们不是相邻的,我需要的是一个使用indexmatchmatch公式完全填充的列(无间隙),但现在由于应用于“Yes”或“no”字段的IF语句,IF语句拾取“no”时有间隙。如果我也将If语句应用于“No”,那么我的数据将不一致。我已经修改了答案,以使用VBA实现它。希望它能有所帮助问题是,如果存在错误值,我希望忽略它们,并在列表中查找下一个“是”,然后将indexmatchmatch应用到该列表中。如果我理解正确,您有一个列值为“是”或“否”的行列表,如果值为“是”,则在下一列中您希望显示“indexmatchmatch”否则空白=如果(=“是”、“indexmatchmatch”和“”。您可以拖动所有行的公式。它们不是相邻的,我需要的是一个使用indexmatchmatch公式完全填充的列(无间隙),但现在由于应用于“Yes”或“no”字段的IF语句,IF语句拾取“no”时有间隙。如果我也将If语句应用于“No”,那么我的数据将不一致。我已经修改了答案,以使用VBA实现它。希望能有所帮助