首页 > 解决方案 > 删除 || (管道)在列内文本的末尾

问题描述

我有这个问题,我似乎无法解决......

在 LI 列中有一定的角色,这些角色用 || 来划分 (管道)。

问题:有些人提供他们想要使用的这些角色,如下所示:

Testing||Admin||Moderator||

但这不适用于我们用来导入这些角色的脚本,我想看到的是,每当 || (管道)被使用,并且在使用管道之后如果没有任何文本跟随它应该删除最后的管道。

我尝试的是查找和替换选项,但这也删除了文本之间的管道。

希望可以有人帮帮我!

问题:

Testing||Admin||Moderator||

解决方案:

Testing||Admin||Moderator

标签: excelvba

解决方案


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

=IF(RIGHT(TRIM(A1),2)="||",LEFT(TRIM(A1),LEN(TRIM(A1))-2),A1)

上述公式基于以下逻辑。

  1. 检查正确的 2 个字符是否||
  2. 如果“是”,则取左边的字符(LEN - 2)
  3. 如果“否”,则按原样返回字符串。

在此处输入图像描述

如果您仍然需要 VBA,请尝试使用此代码,这将一次性更改整个列。此处给出了有关此方法的说明。

出于演示目的,我假设数据ASheet1. 根据需要进行更改。

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

在行动

我只将工作表的名称和范围更改为 L 和 L2:L。– Ulquiorra Schiffer 17 分钟前

在此处输入图像描述


推荐阅读