将句子中多个句号分隔的句子更改为句子大小写

将句子中多个句号分隔的句子更改为句子大小写

我想将句子中的多个文本转换为包含句号的句子大小写。例如,

这是一个句子格式。这也是一个句子格式。

应该

这是句子格式。这也是句子格式。

从论坛上获得这个公式 =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 会{...}在公式栏中显示的公式周围放置括号。

算法

  • 将所有字母变为小写。
  • 替换Dot999 spaces
  • 使用 mid 和 seq_999 数组,根据将字符串拆分为单独的句子Dot
  • TRIM结果数组去掉前导/尾随空格。
  • 将首字母替换为其大写字母。

在此处输入图片描述

相关内容