excel - 删除 || (管道)在列内文本的末尾

标签 excel vba

我有这个问题,我似乎无法解决......
在 L 列中我有某些角色,这些角色被 || 划分(管道)。
问题:有些人提供他们想要使用的这些角色,如下所示:

Testing||Admin||Moderator||
但这不适用于我们用来导入这些角色的脚本,我想看到的是,每当 || (管道)被使用,并且在使用管道之后如果没有任何文本跟随它应该删除最后的管道。
我尝试的是查找和替换选项,但这也删除了文本之间的管道。
希望可以有人帮帮我!
问题:
Testing||Admin||Moderator||
解决方案:
Testing||Admin||Moderator

最佳答案

一个简单的公式就能解决你的要求

=IF(RIGHT(TRIM(A1),2)="||",LEFT(TRIM(A1),LEN(TRIM(A1))-2),A1)
上述公式基于以下逻辑。
  • 检查右2个字符是否为||
  • 如果"is",则取左边的字符(LEN - 2)
  • 如果“否”,则按原样返回字符串。

  • enter image description here
    如果您仍然需要 VBA,请尝试使用此代码,这将一次性更改整个列。 HERE给出了这个方法的解释.
    出于演示目的,我假设数据在 A 列中。的 Sheet1 .根据需要进行更改。
    Option Explicit
    
    Sub Sample()
        Dim ws As Worksheet
        Dim lrow As Long
        Dim rng As Range
        Dim sAddr As String
        
        Set ws = Sheet1
        
        With ws
            lrow = .Range("A" & .Rows.Count).End(xlUp).Row
            
            Set rng = .Range("A1:A" & lrow)
            sAddr = rng.Address
            
            rng = Evaluate("index(IF(RIGHT(TRIM(" & sAddr & _
                                  "),2)=""||"",LEFT(TRIM(" & sAddr & _
                                  "),LEN(TRIM(" & sAddr & _
                                  "))-2)," & sAddr & _
                                  "),)")
        End With
    End Sub
    
    在行动 :

    I only changed the name of the worksheet and the range to L and L2:L. – Ulquiorra Schiffer 17 mins ago


    enter image description here

    关于excel - 删除 || (管道)在列内文本的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66073370/

    相关文章:

    vba - 在子例程中调用的子例程中的 Application.ScreenUpdating

    vba - 如何忽略 range.find 函数中的通配符

    vba - Excel VBA;引用变量范围

    excel - 如何删除用/分隔的单元格中的重复值?

    excel - 查找单元格中一起出现的 n 个数字的公式

    vba - 在幻灯片模式下将 PPT 幻灯片导出为 PDF 时浏览保存位置和命名

    excel - VBA Excel 的大小写语法

    excel - 如何使用vba将一个word文档的内容复制到另一个word文档的末尾?

    excel - 将两个字符对象添加在一起,以连接它们的文本,但保留每个字符的格式

    c# - 在 C# 中使用密码打开 EXCEL (.xlsx)