Como faço para combinar String com cada valor separado por vírgula de outra célula

Como faço para combinar String com cada valor separado por vírgula de outra célula

Estou trabalhando com uma lista de números de contas na coluna A e uma lista de subs na coluna B. A coluna A tem apenas o número da conta, por exemplo: 310050. A coluna B tem uma lista de subs: Exemplo: 10,11,30. O que estou tentando fazer é criar uma equação para a coluna C cuspir 31005010,31005011,31005030, mas tudo que estou pesquisando mostra apenas como dividir vírgulas em linhas ou colunas. Como vocês resolveriam isso? Configuração atual do Excel

Responder1

Se você tiver uma assinatura do Office 365 Excel, use esta fórmula de matriz:

=TEXTJOIN(",",TRUE,A1&TRIM(MID(SUBSTITUTE(B1,",",REPT(" ",999)),(ROW(INDIRECT("1:" & LEN(B1)-LEN(SUBSTITUTE(B1,",",""))+1))-1)*999+1,999)))

Sendo uma fórmula de matriz, ela precisa ser confirmada com Ctrl-Shift-Enter em vez de Enter ao sair do modo de edição. Se feito corretamente, o Excel definirá {}a fórmula.

![insira a descrição da imagem aqui


Se você não tiver uma assinatura, poderá colocar esse código em um módulo anexado à pasta de trabalho. Então você usaria a fórmula conforme descrito acima.

Function TEXTJOIN(delim As String, skipblank As Boolean, arr)
    Dim d As Long
    Dim c As Long
    Dim arr2()
    Dim t As Long, y As Long
    t = -1
    y = -1
    If TypeName(arr) = "Range" Then
        arr2 = arr.Value
    Else
        arr2 = arr
    End If
    On Error Resume Next
    t = UBound(arr2, 2)
    y = UBound(arr2, 1)
    On Error GoTo 0

    If t >= 0 And y >= 0 Then
        For c = LBound(arr2, 1) To UBound(arr2, 1)
            For d = LBound(arr2, 1) To UBound(arr2, 2)
                If arr2(c, d) <> "" Or Not skipblank Then
                    TEXTJOIN = TEXTJOIN & arr2(c, d) & delim
                End If
            Next d
        Next c
    Else
        For c = LBound(arr2) To UBound(arr2)
            If arr2(c) <> "" Or Not skipblank Then
                TEXTJOIN = TEXTJOIN & arr2(c) & delim
            End If
        Next c
    End If
    TEXTJOIN = Left(TEXTJOIN, Len(TEXTJOIN) - Len(delim))
End Function

Responder2

Caso a função TEXTJOINesteja indisponível e UDFa solução não seja desejável por algum motivo, esta fórmula da planilha ajudará neste caso:

=SUBSTITUTE("@"&SUBSTITUTE(B1,",",",@"),"@",A1)

, assumindo que esse símbolo @não seja usado nos dados, caso contrário, use qualquer outro símbolo não utilizado.

insira a descrição da imagem aqui

informação relacionada