Página 1 de 1

Concatenar coluna em uma única linha

Enviado: 22 Mai 2023 às 22:37
por ianbernardof
Prezados,

Estou com uma planilha a qual preciso fazer uma concatenação de valores da coluna F para uma única linha da Coluna CS e CT, contudo existem 2 variáveis:

Na coluna CS os valores a serem retornados são a concatenação da coluna F, até o conjunto de dados em que a Coluna E estiver igual e se a COluna CY estiver igual a 1, essa linha da coluna F não pode entrar na concatenação.

Na coluna CT os valores a serem retornados são a concatenação da coluna F, até o conjunto de dados em que a coluna E estiver igual e se a coluna CY estiver igual a 0, essa linha da coluna F não pode entrar na concatenação.
Imagem

Re: Concatenar coluna em uma única linha

Enviado: 27 Mai 2023 às 11:26
por PHSabater
Exercitei aqui com macro, ainda tem que melhorar, mas preciso sair.

Dim lLoop As Long
Dim colCS As String
Dim colCT As String


lLoop = 2

While Sheets("Sheet1").Cells(lLoop, "E") <> ""
'Verifica se a posição na coluna E é diferente da posição anterior
If Sheets("Sheet1").Cells(lLoop, "E") <> Sheets("Sheet1").Cells(lLoop - 1, "E") Then
'Limpa as variáveis
colCS = ""
colCT = ""

'Verifa o que tem na coluna CY
If Sheets("Sheet1").Cells(lLoop, "CY") = 0 Then
colCS = Sheets("Sheet1").Cells(lLoop, "F")
Sheets("Sheet1").Cells(lLoop, "CS") = colCS
End If
If Sheets("Sheet1").Cells(lLoop, "CY") = 1 Then
colCT = Sheets("Sheet1").Cells(lLoop, "F")
Sheets("Sheet1").Cells(lLoop, "CT") = colCT
End If
End If
If Sheets("Sheet1").Cells(lLoop, "E") = Sheets("Sheet1").Cells(lLoop - 1, "E") Then
'Verifa o que tem na coluna CY
If Sheets("Sheet1").Cells(lLoop, "CY") = 0 Then
colCS = colCS & ";" & Sheets("Sheet1").Cells(lLoop, "F")
Sheets("Sheet1").Cells(lLoop, "CS") = colCS
End If
If Sheets("Sheet1").Cells(lLoop, "CY") = 1 Then
colCT = colCT & ";" & Sheets("Sheet1").Cells(lLoop, "F")
Sheets("Sheet1").Cells(lLoop, "CT") = colCT
End If
End If

lLoop = lLoop + 1
Wend
End Sub

Re: Concatenar coluna em uma única linha

Enviado: 08 Jun 2023 às 22:08
por Estevaoba
Boa noite.

Usei esta fórmula em DG2, copiada para baixo, para criar uma coluna auxiliar para marcar início e fim de cada intervalo.

=SE(E2<>E1;MÁXIMO(DG$1:DG1)+1;"")

E esta outra com funções do Excel 365 ou posterior, para concatenar valores na coluna CS:

=LET(RangeF;ÍNDICE(ÍNDICE($F$2:$F$1000;CORRESP(MÁXIMO(DG$2:DG2);$DG$2:$DG$1000;0)):ÍNDICE($F$2:$F$1000;CORRESP(MÁXIMO(DG$2:DG2)+1;$DG$2:$DG$1000;0)-1);0);
RangeCY;ÍNDICE(ÍNDICE($CY$2:$CY$1000;CORRESP(MÁXIMO(DG$2:DG2);$DG$2:$DG$1000;0)):ÍNDICE($CY$2:$CY$1000;CORRESP(MÁXIMO(DG$2:DG2)+1;$DG$2:$DG$1000;0)-1);0);
FiltroF;FILTRO(RangeF;RangeCY<>1;"N/D");UNIRTEXTO("; ";1;FiltroF))

Good luck!