我想将句子中的多个文本转换为包含句号的句子大小写。例如,
这是一个句子格式。这也是一个句子格式。
应该
这是句子格式。这也是句子格式。
从论坛上获得这个公式 =UPPER(LEFT(A1,1))&LOWER(RIGHT(A1,LEN(A1)-1))
,但它只考虑了第一个陈述。
您能否使用自定义公式或 VBA 宏来帮忙
答案1
首先让我解释一下为什么你的公式不起作用的原因。
=UPPER(LEFT(A1,1))&LOWER(RIGHT(A1,LEN(A1)-1))
它只将的第一个字母转换A1
为大写并适用小写其余部分A1
。
这个问题需要一些棘手的公式。
单元格中的公式
Q4
:=SUBSTITUTE(SUBSTITUTE(PROPER (SUBSTITUTE(SUBSTITUTE(PROPER(Q1),". ","9z9")," ","zxz")),"9Z9",". "),"zxz"," ")
实际上,该公式用 3 个字符串替换句号和空格,以应用该技巧,该PROPER
案例将每个句子视为一个单词。之后,该公式用句号和空格重新替换文本。
注意:
- 将公式复制到单元格
Q8
&中Q12
。
根据需要调整公式中的单元格引用。
答案2
如果你有 Office 365 或 Excel 2016 有此TEXTJOIN
功能,你可以使用这个大批公式:
=TEXTJOIN(". ",TRUE,UPPER(LEFT(TRIM(LOWER(MID(SUBSTITUTE(A4,".",REPT(" ",999)),seq_999,999)))))& MID(TRIM(LOWER(MID(SUBSTITUTE(A4,".",REPT(" ",999)),seq_999,999))),2,999))
其中seq_999
命名公式返回一个类似于={1;999;1998;2997;3996;...
以下内容的数组:
=IF(ROW($A$1:INDEX($A:$A,255,1))=1,1,(ROW($A$1:INDEX($A:$A,255,1))-1)*999)
输入/确认数组公式,按住ctrl+shift并点击enter。如果你操作正确,Excel 会{...}
在公式栏中显示的公式周围放置括号。
算法
- 将所有字母变为小写。
- 替换
Dot
为999 spaces
- 使用 mid 和 seq_999 数组,根据将字符串拆分为单独的句子
Dot
。 TRIM
结果数组去掉前导/尾随空格。- 将首字母替换为其大写字母。