【问题标题】:Excel Conditional Proper Case FormattingExcel 条件正确大小写格式
【发布时间】:2021-04-10 18:27:16
【问题描述】:

我正在尝试将单元格中的文本转换为正确大小写格式,但某些缩写(比如“DAD”、“ABC”、“CBD”)除外,它们应该是大写。

Proper Case ConversionConditional Formatting 的这些链接中,我需要使用Select Case 语句,但我不知道如何实现它。

Sub ProperCase()
Dim Rng As Range
Dim WorkRng As Range

On Error Resume Next
xTitleID = "Conditional Proper Case Conversion"

Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleID, WorkRng.Address, Type:=8)

For Each Rng In WorkRng
    Rng.Value = Application.WorksheetFunction.Proper(Rng.Value)
Next
End Sub

此代码请求一系列单元格来执行转换。

如何为某些字符串/文本(即缩写)添加条件功能?

【问题讨论】:

  • 您使用的是什么类型的单元格内容?单字,还是多字文本?
  • 大多数情况下是单个单词,但某些单元格中可能包含多个单词,例如 2 或 3。代码应该可以工作,以便如果在单元格中找到可识别的缩写,该缩写将是转换为大写,而所有其他单词都是正确的。
  • 单个单词会相对简单,如下面的 Excel Hero 的帖子所示,但是多个单词会更困难,除非有一些可预测的分隔符可以用来根据你的上列表单独测试每个单词 -案例条款。
  • 我相信 Excel Hero 提供的单字解决方案现在可以做到。我必须确认是否需要多字实现,如果需要,如果遇到问题,我一定会再次访问此页面。非常感谢你们!

标签: excel vba excel-formula conditional-formatting


【解决方案1】:

应该这样做:

Sub ProperCase()
    Dim r As Range
    Const EXCEPTIONS$ = ".dad.abc.cbd."
    
    On Error Resume Next
    For Each r In Application.InputBox("Range", "Conditional Proper Case Conversion", Selection.Address, Type:=8)
        If InStrB(EXCEPTIONS, "." & LCase(r) & ".") Then
            r = UCase(r)
        Else
            r = WorksheetFunction.Proper(r)
        End If
    Next
End Sub

只需编辑 EXCEPTIONS 常量。确保句点跨越 EXCEPTIONS 字符串中的每个项目。

【讨论】:

  • 感谢 Excel 英雄。您的解决方案适用于单元格中的单个单词,我相信这足以满足我的需求。如果事实证明我需要一个多字实现并且我在实现它时遇到了麻烦,我一定会回到这个页面。
  • 不客气。此解决方案也适用于单元格中的多个单词。在发布之前,我在单元格中使用多个单词对其进行了测试。如果单元格中有句点,则可能会发生冲突,但是您可以在 EXCEPTIONS 字符串中使用竖线 (|) 或其他一些唯一字符。
  • 抱歉,我的意思是*单个缩写/单元格中的例外。如果代码需要这样的调整,我一定会尝试管道!
猜你喜欢
  • 2018-02-14
  • 1970-01-01
  • 2014-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-21
相关资源
最近更新 更多