使用Excel在字母数字字符串中出现某些字母的总和

Kse*_*nia 4 excel parsing match string-matching

我在应用程序测试中使用了一系列字母数字数据,由于某些原因,我需要计算每个字符串中"a"到"f"的字母出现总和(这将用于进一步的数据处理):

02599caa0b600 --> should be 4
489455f183c1fb49b --> should be 5
678661081c1h
66410hd2f0kxd94f5bb
8a0339a4417
f6d9f967ts4af6e
886sf7asc3e85ec
03f1fhh3c3a2am
e491b17638m60
1m8h2m07bhaa4tnhbc4
29ma900a80m96m65
ca6a75f505tsac8
956828db8ts7fd1d
cf1d220a59a7851180e
a8b7852xd9e7a9
b85963fbe30718db9976
39b8kx8f85abb1b6
0xxb3b648ab
a8da75f730d45048
588h69d344
Run Code Online (Sandbox Code Playgroud)

这是字符串的样子,它们的长度大约是10-30个符号,我想它每天大约有3-5k个用于处理.假设和限制:

  1. 信件的情况并不重要(愉快).
  2. 字母列表可能会改变一天,但很可能仍然是一个范围,例如ak,dg等 - 因此解决方案应该尽可能灵活.
  3. 不禁止任何临时计算/范围,但越短越好.
  4. 我更喜欢纯Excel解决方案,但万一它太复杂了 - VBA仍然是一个选择.然而,复杂的Excel公式比"2行代码"VBA更好 - 如果第一个按预期工作.

到目前为止我已经尝试过的事情(我注意到,这里的做法非常受欢迎):

  • 通过已经回答的问题进行搜索,但没有找到任何类似的基于Excel的解决方案.其他语言/方法不是一种选择(VBA除外).
  • 到目前为止,我自己得到的最好的东西是嵌套SUBSTITUTE函数,但它很脏而且非常简单.假设范围可能会变为cx,这将是一场噩梦.
  • 我不是Excel的新手,但复杂的数组公式之类的东西对我来说仍然很难 - 唉但是真的......

无论如何,我不要求"随时可用"的"开箱即用"解决方案 - 我寻求帮助和正确的方向/方法进行自学并进一步了解类似的问题.

bar*_*ini 6

您可以在不嵌套多个SUBSTITUTE函数的情况下使用SUBSTITUTE,例如,在A1中的文本字符串中,B1中的此公式将计算所有字母a到f(大写或小写)

=SUMPRODUCT(LEN(A1)-LEN(SUBSTITUTE(LOWER(A1),{"a","b","c","d","e","f"},"")))

对于较长的字母列表,例如c到x,您可以使用此版本以避免将它们全部列出

=SUMPRODUCT(LEN(A1)-LEN(SUBSTITUTE(LOWER(A1),CHAR(96+ROW(INDIRECT("3:24"))),"")))

3:24表示字母3(c)至字母24(x),因此您可以轻松地将其更改为1:26表示所有字母或15:25表示o至y等.