如何制作一个excel(365)函数,识别同一个单元格中的不同单词,并单独更改它们

ivqmmu1c  于 2023-01-21  发布在  其他
关注(0)|答案(2)|浏览(95)

我在用什么

我有一个产品名称列表,但不幸的是,它们都是大写的。我现在只想将第一个字母大写,其余字母小写,但我还希望所有包含3个或更少符号的单词都保持大写
我尝试如果功能,但没有什么是真正的工作
我使用德语excel版本,但我会很高兴,如果有人有任何想法如何做,我尝试不同的功能几个小时,但没有任何工作

=IF(LENGTH(C6)<=3,UPPER(C6),UPPER(LEFT(C6,1))&LOWER(RIGHT(C6,LENGTH(C6)-1)))

但这是一个#NAME错误,excel无法识别第一个和最后一个括号

wh6knrhe

wh6knrhe1#

太难了!听我解释:
1.我确实相信有一些德语单词在4个字符以下,你应该排除。我的德语不是很好,但可能会有大量的单词在4个字符以下;
1.似乎有长度超过3个字符的子字符串,但可能应保持大写,例如"550E/ER";
1.似乎有相当多的字符可以用作分隔符来将输入内容分割成"单词",如果没有完整的列表,很难捕捉到其中的任何一个;
1.可能的其他原因;
考虑到以上这些,我认为可以肯定地说,我们可以尽我们所能去完成你想要的事情。因此,我建议

  • 拆分多个字符;
  • 当长度〈3时,排除某些大写单词;
  • 包括某些单词,当长度〉3且存在数字时,这些单词为大写;
  • 假设第一个字符可以在任何输入中变为大写;

例如:

B1中的公式:

=MAP(A1:A5,LAMBDA(v,LET(x,TEXTSPLIT(v,{"-","/"," ","."},,1),y,TEXTSPLIT(v,x,,1),z,TEXTJOIN(y,,MAP(x,LAMBDA(w,IF(SUM(--(w={"zu","ein","für","aus"})),LOWER(w),IF((LEN(w)<4)+SUM(IFERROR(FIND(SEQUENCE(10,,0),w),)),UPPER(w),LOWER(w)))))),UPPER(LEFT(z))&MID(z,2,LEN(v)))))

你可以看到捕捉每一种可能性是多么困难;

  • 一旦你排除了几个单词,另一个单词就会弹出(例如数字之间的"x",它应该根据上下文保持大写/小写);
  • 第二次你包含了含有数字的词,你注意到有些词应该被排除在外('00SICHERUNGS ....');
  • 如果第一个字符是数字,则整个上述解决方案将不改变第一个字母字符的大写;
  • 也许有些字符不应该根据上下文用作分隔符?想想连字符;
  • 可能是其他原因。

关键是,这不仅仅是困难,对于您当前正在处理的数据类型,如果不是不可能的话,也是极其困难的!即使您精通编写正则表达式(如果您愿意,可以插入所有(Excel不可用的)标记、量词和方法),我怀疑是否可以涵盖所有边缘情况。

p1iqtdky

p1iqtdky2#

因为你要在一个单元格中处理任意数量的单词,所以你需要巧妙地处理这个问题,幸好有TEXTSPLIT()TEXTJOIN()可以快速地将文本拆分成单词,然后我们可以测试长度,改变大小写,然后在一个公式中将它们重新连接起来:

=TEXTJOIN(" ", TRUE, IF(LEN(TEXTSPLIT(C6," "))<=3,UPPER(TEXTSPLIT(C6," ")),PROPER(TEXTSPLIT(C6," "))))

还使用了PROPER()公式,它只大写一个单词的第一个字符。

相关问题