【发布时间】:2015-02-05 21:32:43
【问题描述】:
我必须在一个单元格中找到报告中的个人 ID。太糟糕了,隐藏此 ID 的单元格中的字符串可以是任何东西,ID 可以在开头、结尾、任何地方,但它就在那里。 我唯一知道的是“空格,字母,字母,数字,数字,数字,数字,数字,数字,空格”模式。吉科DB544345
我一直在为这个“面具”寻找正确的词,但找不到答案。感谢您的帮助。
【问题讨论】:
-
好的,我会检查的,谢谢。也许我们可以通过查找所有空格,查看它后面的字符串是否是这个长度,然后检查它是否是正确的格式来解决这个问题?
-
@pnuts 我同意你的观点,VBA 更适合非黑客解决方案(因此评论赞成),但在你的第二条评论中......如果你可以在你可以评估的空间之间分割这些块一个 8 字符块,其数组公式基本上根据 UNICODE 范围转换每个字符。大写字母为 2,数字为 1,其他任何数字为 0。将该数组中的每个数字提升到其在字符串中的索引的指数。总结他们。并检查你的答案是否等于 516。是的,我已经写了那个公式。
-
@pnuts 出于某种原因,在公式中进行这项工作的挑战让我很感兴趣。困难的部分是将两个步骤结合起来:生成块和执行测试。在一个公式中生成所有可能块的数组并不难。测试成分当然可以在一个公式中。将两者结合起来会很奇怪。
-
@pnuts 确实更简单。对于这个特定的简单模式,您可以对其中的大部分进行数字检查。旁注:我认为在这样的问题上使用代码通常很容易,但我发现自己并没有在 Excel 中大力推动这种情况,因为即使作为一名程序员,我也知道存在的长期问题。但是,使用公式会导致很多关于内置函数缺陷和怪癖的黑客攻击。
-
@pnuts 看起来我的潜意识不想放弃这个问题...我认为如果数字部分以破折号开头或包含句点,您的方法会发现错误的匹配项。
标签: excel vba find excel-formula wildcard