【问题标题】:What is the easiest way to remove a word from a string in excel?从excel中的字符串中删除单词的最简单方法是什么?
【发布时间】:2016-12-03 18:46:31
【问题描述】:

您好,我有一个 Excel,其中一张表 A 包含一个表格,其中一列具有逗号分隔值,另一张表 B 包含一些数据。 所以我需要搜索从 B 到工作表 A 逗号分隔列的数据,如果找到,则从字符串中删除该数据。在这里,我需要根据另一列处理这些列。例如:

表 A

a 栏 |逗号分隔列

一个 | 1,2,3,4

b | 1,3,5,7

c | 1,2,3,4

d | 1,3,5,7

e | 1,2,3,4

表 B

a 栏 | b列

一个 | 1

一个 | 2

b | 1

b | 3

c | 1

c | 4

d | 3

d | 7

结果:

a 栏 |逗号分隔列

一个 | 3,4

b | 5,7

c | 2,3

d | 1,5

e | 1,2,3,4

是否可以获取结果?我是 excel 和宏的新手,但尝试了可能仍然找到确切解决方案的方法。无论是使用宏公式还是excel公式,有没有最简单的方法。

【问题讨论】:

  • 到目前为止你尝试过什么? SO 不仅仅是一个向其他用户索要代码的网站,它旨在帮助解决彼此的问题。

标签: vba excel macros


【解决方案1】:

这对我有用。对于较大的数据集,效率可能是个问题。

Sub Main()
    Dim shtAList As Range, rngA As Range
    Dim shtBList As Range, rngB As Range

    Set shtAList = Worksheets("A").Range("A1:A5")
    Set shtBList = Worksheets("B").Range("A1:A8")

    For Each rngA In shtAList
        For Each rngB In shtBList
            If rngB = rngA Then
                rngA.Offset(0, 1) = StripString(rngA.Offset(0, 1), rngB.Offset(0, 1))
            End If
        Next rngB
    Next rngA
End Sub

Function StripString(csv As Range, strip_string As String) As String
    Dim strings() As String, i As Integer, temp As String, result As String

    temp = vbNullString
    strings = VBA.Split(csv, ",")

    For i = 0 To UBound(strings)
        If strings(i) <> strip_string Then
            temp = temp & strings(i) & ","
        End If
    Next i

    result = IIf(VBA.Right$(temp, 1) = ",", VBA.Left$(temp, Len(temp) - 1), temp)
    StripString = result
End Function
  • Main 只是循环您的两个列表以查找匹配项。
  • StripString 是字符串比较和剥离发生的地方

【讨论】:

    猜你喜欢
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    • 2012-07-11
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多