【问题标题】:Remove first concat to empty string删除第一个连接到空字符串
【发布时间】:2020-08-06 23:24:49
【问题描述】:

当前使用下面的代码,输出将是~ abc~ etc~ etc~。如何删除第一个 ~。所以它应该立即以 abc 开头,而不是 ~

Function SpecialLookup(lookup_value As String, src_rng As Range, column_index As Long)

    Dim rng As Range
    Dim xResult As String
    xResult = ""
    For Each rng In src_rng
        If rng = lookup_value Then
            xResult = xResult & "~ " & rng.Offset(0, column_index - 1).Value
        End If
    Next
    SpecialLookup = xResult
End Function

【问题讨论】:

标签: excel vba


【解决方案1】:

Mid 应该可以解决问题


SpecialLookup = Mid(xResult, 3, Len(xResult))

【讨论】:

  • 在vba中,第三个标准是可选的,你可以用SpecialLookup = Mid(xResult, 2)得到相同的结果,我相信它应该SpecialLookup = Mid(xResult, 3)作为前缀是'~ '
  • @ScottCraner 很好地抓住了领先空间。我不知道 VBA 默认为全长字符串。感谢分享!
  • 嘿 urdeaboy 和 scottcraner!非常感谢两位!完美运行。
【解决方案2】:

我喜欢这种模式:

Function SpecialLookup(lookup_value As String, src_rng As Range, column_index As Long)
    Dim rng As Range
    Dim xResult As String, sep as String
    For Each rng In src_rng
        If rng = lookup_value Then
            xResult = xResult & sep & rng.Offset(0, column_index - 1).Value
            sep = "~ " '<<<<<
        End If
    Next
    SpecialLookup = xResult
End Function

【讨论】:

    【解决方案3】:

    另一个选项是 IF:

    Function SpecialLookup(lookup_value As String, src_rng As Range, column_index As Long)
    
        Dim rng As Range
        Dim xResult As String
        xResult = ""
        For Each rng In src_rng
            If rng = lookup_value Then
                If xResult = "" Then
                    xResult = rng.Offset(0, column_index - 1).Value
                Else
                    xResult = xResult & "~ " & rng.Offset(0, column_index - 1).Value
                End If
            End If
        Next
        SpecialLookup = xResult
    End Function
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-29
      • 2012-11-27
      • 1970-01-01
      相关资源
      最近更新 更多