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.
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 TEXTJOIN
esteja indisponível e UDF
a 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.