使用忽略虚假值子句的IF语句

问题描述:

我在Excel中有一个包含“是”和“否”的数据列表。使用忽略虚假值子句的IF语句

我需要一个IF语句,它只会对具有“是”值的单元格起作用,并跳过具有“否”值的单元格。

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

我明白这可以有一个简单的解决方案使用VBA,所以如果任何人有一个基于Excel的解决方案或基于VBA的解决方案,他们也同样有帮助。

我可以添加列和行到我正在使用的数据集(如果需要的话)。

+1

您试过自己的代码/研究?此外,更多的肉问题将有所帮助 –

+0

我已经尝试过我自己的Excel解决方案,但我的VBA技能没有达到任务,我试过了,失败了。 – FrasercT

+0

这不起作用? '= IF(A1 =“Yes”,,“”)' – tigeravatar

试试这个:

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将只有其中的那些行是在Sheet1中。请根据您的要求修改代码

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 
+0

问题是,如果存在错误值,我想忽略它们并在列表中查找下一个“是”,并将indexmatchmatch应用于那 – FrasercT

+0

如果我理解正确,你有一个列值为“是”或“否”的行列表​​,如果值为“是”,则在下一列中显示“indexmatchmatch”,否则为空。 = IF( =“是”,“indexmatchmatch”,“”)。您可以拖动所有行的公式。 –

+0

它们不是相邻的,我需要的是使用indexmatchmatch公式填充的列(没有间隙),但现在由于IF语句适用于“是”或“否”字段,所以我有空隙, IF语句正在提取“否”。如果我将IF语句应用于“否”,那么我的数据将会不一致。 – FrasercT