gpt4 book ai didi

vba - Excel - VBA : make Match method less restrictive (by finding a word in a sentence)

转载 作者:行者123 更新时间:2023-12-01 04:32:35 25 4
gpt4 key购买 nike

我在我的 excel 程序中使用了 match 函数,但我遇到了 的问题它只选择相同的匹配 .例如,如果您将一个带有“Banana”的单元格与另一个带有“Banana”的单元格进行比较,它将起作用并返回一个正值。
但是如果你将“Banana”与内容为“Banana choco”的单元格进行比较,那么它就不会识别出香蕉这个词在单元格中。

就我而言,只要在句子中发现一个单词,我就想返回一个 TRUE 值。

这是我的代码:

Worksheets("sBldgMakati").Activate

For i = 2 To 605
Range("B" & i).Activate
myResult = IsNumeric(Application.Match(ActiveCell.Value, elementsListRange, 0))

If myResult Then
Range("K" & i).Value = Range("K" & i).Value + 10
Else
Range("K" & i).Value = Range("K" & i).Value + 0
End If

Next i

我必须在此代码中指定 elementsListRange对应于内容只有一个单词的一系列单元格(例如“Banana”)和 ActiveCell.value通常是一个较长的表达式(例如“Banana choco”)。

在此先感谢您的帮助 !

最佳答案

从 Excel 中的帮助文档(如果您按 F1 并搜索 match ):

If match_type is 0 and lookup_value is a text string, you can use the wildcard characters — the question mark (?) and asterisk (*) — in the lookup_value argument. A question mark matches any single character; an asterisk matches any sequence of characters.



因此, =MATCH("*Banana*",C8,0)返回 1如果 C8包含 "Banana choco" .

在 VBA 中,如果要匹配的项目在一个单元格中,您可以在字符串连接中包含通配符星号,例如:
myResult = IsNumeric(Application.Match("*" & ActiveCell.Value & "*", elementsListRange, 0))

如果 B2:B605 范围内有很多句子必须针对 elementListRange 中的所有单词进行测试,在这种情况下似乎就是这种情况,我认为你可能需要做这样的事情(未经测试):
For Each cell in elementsListRange.Cells
myResult = Application.Match("*" & cell.Value & "*", B2:B605, 0)
if (IsNumeric(myResult)) then
Range("K" & myResult).Value = Range("K" & myResult).Value + 10
end if
next

关于vba - Excel - VBA : make Match method less restrictive (by finding a word in a sentence),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16165138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com