如何比较 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。
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。