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

How to compare a string within a string list in Excel

I2和J22之间有一些食物的名称和价格可以看到。例如,AYÇICEK YAĞI(英文的葵花油)是每公斤 4 美元。在sheet的左边,你可以看到其他列表。我需要的是;

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

有 500 多行,我需要对所有行都执行此操作。

还有一些标题是粗体字,应该受到保护。

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

在 Sheet ogle_aksam_gramaj 单元格 D4 中使用以下公式:

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

然后您可以将其向下拖动,它应该会根据同一 sheet 中提供的详细信息为您提供价格(范围 I:J)

sum if 的好处(或坏处,取决于你)是,如果没有要求和的东西,它会 return 0。在你的 sheet 中,项目在列表中必须是唯一的,否则,它将对每个实例进行求和。所以如果AYÇICEK YAĞI出现了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 已用于 'wrap' 查找和乘法公式。它捕获错误并提供替代结果;在这种情况下,看起来是空白的零长度字符串。

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

该二进制(启用宏的)工作簿可从我自己的 public 保管箱 here