如何比较Excel中字符串列表中的字符串

时间:2016-02-07 10:37:14

标签: string excel if-statement compare formula

Hi guys, I am trying to write an if statement in Excel but I could not find the right way to make what I need

在I2和J22之间,您可以看到一些食品名称和价格。例如,AYÇICEKYAĞI(英语中的向日葵油)每公斤4美元。在工作表的左侧,您可以看到其他列表。我需要的是什么;

我想比较所有A *列与I2:I22之间的字符串,并得到J2:J22之间写的价格,然后将其写入D *列。

有超过500行,我需要为所有行执行此操作。

你可以用粗体看到一些标题,它们应该受到保护。

2 个答案:

答案 0 :(得分:2)

你似乎想出了一个公式;现在你需要一种方法来分配它。您的工作表设计不适合简单地填写公式。但是,如果C列中的数字标识了需要D和E列中的公式的有效条目,则短子过程可以快速将公式放入正确的位置。

Sub fillFormula()
    Dim w As Long, vWSs As Variant, vFRMLs As Variant

    vWSs = Array("ogle_aksam_gramaj", "kahvalt" & ChrW(305) & "_gramaj", _
                 "araogun_gramaj")

    For w = LBound(vWSs) To UBound(vWSs)
        With Worksheets(vWSs(w))
            With .Columns(3)   '<~~ going to look at column C for numbers
                With .SpecialCells(xlCellTypeConstants, xlNumbers)
                    .Offset(0, 1).FormulaR1C1 = _
                        "=IFERROR(VLOOKUP(RC1, 'urunler'!C1:C2, 2, FALSE), """")"
                    .Offset(0, 2).FormulaR1C1 = _
                        "=IFERROR(RC4*RC3, """")"
                End With
            End With
        End With
    Next w
End Sub

IFERROR function已用于“包装”查找和mulltiplication公式。它捕获错误并提供替代结果;在这种情况下,零长度的字符串看起来是空白的。

由于unicode字符,kahvaltı_gramaj工作表会导致VBA出现问题。您可以尝试其他循环工作表的方法。

gamaji

可以从我自己的公共保管箱here获取该二进制(启用宏)工作簿。

答案 1 :(得分:0)

在您附加的工作簿中,VLOOKUP会在没有可用值时返回#N/A

在工作表ogle_aksam_gramaj中,单元格D4使用以下公式:

=SUMIF($I:$I,$A4,$J:$J)

然后你可以将它拖下来,它应该根据同一张表格中提供的详细信息给你价格(范围I:J)

如果没有任何要求,它将返回0,那么总和的好处(或者坏,取决于你)。在您的工作表中,项目在列表中必须是唯一的,否则,它将保持对每个实例的求和。因此,如果AYÇICEKYAĞI在那里2次,它将被加总两次。

您可以使用高级过滤器(仅限唯一值)以确保所有成分都被计算在内并且仅提及一次。

感谢。