如何比较Excel中string列表中的string

嗨,大家好,我想在Excel中写一个if语句,但是我找不到正确的方法来创建我需要的东西

在I2和J22之间可以看到一些食品名称和价格。 例如AYÇICEKYAĞI(SUNFLOWER OIL IN ENGLISH)是每公斤4美元。 在表格的左侧,您可以看到其他列表。 我需要的是

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

有超过500行,我需要做的所有行。

还有一些标题可以用粗体显示,应该加以保护。

你似乎已经提出了一个公式; 现在你需要一种方法来分配它。 您的工作表devise不适合简单地填写一个公式。 然而,在列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函数已被用来“包装”查找和简单公式。 它捕捉错误并提供替代结果; 在这种情况下,零长度的string看起来空白。

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

gamaji

这个二进制(启用macros)的工作簿可以从我自己的公共收件箱中获得。

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

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

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

然后,您可以将其拖下来,并根据相同工作表中提供的详细信息给出价格(范围I:J)

如果没有什么和,它会返回0的好东西(或坏,取决于你)。 在你的工作表中,项目在列表中必须是唯一的,否则,它将不断地总结每个实例。 所以如果AYÇICEKYAĞI在那里有两次,它会被加总两次。

您可以使用高级filter(仅限于唯一的值),以确保所有成分都被考虑在内,并且只被提及一次。

谢谢。