Consejo: Otros idiomas son traducidos por Google. Puedes visitar el English versión de este enlace.
Iniciar sesión
x
or
x
x
Suscríbete
x

or

¿Cómo concatenar fácilmente el texto según los criterios en Excel?

Supongamos que tengo una columna de números de identificación que contiene algunos duplicados y una columna de nombres, y ahora, quiero concatenar los nombres basados ​​en los números de identificación únicos como captura de pantalla izquierda, para combinar rápidamente el texto en función de los criterios, ¿cómo podríamos hacer en Excel?

doc combine el texto basado en los criterios 1

Concatenar texto basado en criterios con función definida por el usuario

Concatenar texto basado en criterios con Kutools para Excel


Concatenar texto basado en el mismo valor en otra columna:

Con Kutools for Excel, Filas de combinación avanzadas de hecho, puede combinar rápidamente múltiples filas duplicadas en un registro basado en columnas clave, y también puede aplicar algunos cálculos como suma, promedio, recuento, etc. para otras columnas.

  • 1. Especifique la columna clave en la que desea combinar otra columna;
  • 2. Elija el separador para sus datos combinados.

doc combine el texto basado en los criterios 10

Kutools for Excel: con más de 200 útiles complementos de Excel, de prueba sin límite en días 60. Descargar y prueba gratis ahora!



Para combinar texto con los números únicos de ID, primero puede extraer los valores únicos y luego crear una Función definida por el usuario para combinar los nombres en función de la ID única.

1. Tome los siguientes datos como ejemplo, primero debe extraer los números de identificación únicos, aplique esta fórmula de matriz: =IFERROR(INDEX($A$2:$A$15, MATCH(0,COUNTIF($D$1:D1, $A$2:$A$15), 0)),""), Ingrese esta fórmula en una celda en blanco, D2 por ejemplo, luego presione Ctrl + Shift + Enter teclas juntas, ver captura de pantalla:

doc combine el texto basado en los criterios 2

Tip: En la fórmula anterior, A2: A15 es el rango de datos de lista del que desea extraer valores únicos, D1 es la primera celda de la columna que desea mostrar el resultado de extracción.

2. Y luego arrastre el controlador de relleno hacia abajo para extraer todos los valores únicos hasta que se muestren los espacios en blanco, vea la captura de pantalla:

doc combine el texto basado en los criterios 3

3. En este paso, debe crear un Función definida por el usuario para combinar los nombres basados ​​en los números de ID únicos, mantenga presionada la tecla ALT + F11 llaves, y abre la Microsoft Visual Basic para aplicaciones ventana.

4. Hacer clic recuadro > Móduloy pegue el siguiente código en Módulo Ventana.

Código VBA: concatenar texto basado en criterios

Function ConcatenateIf(CriteriaRange As Range, Condition As Variant, ConcatenateRange As Range, Optional Separator As String = ",") As Variant
'Update 20150414
Dim xResult As String
On Error Resume Next
If CriteriaRange.Count <> ConcatenateRange.Count Then
    ConcatenateIf = CVErr(xlErrRef)
    Exit Function
End If
For i = 1 To CriteriaRange.Count
    If CriteriaRange.Cells(i).Value = Condition Then
        xResult = xResult & Separator & ConcatenateRange.Cells(i).Value
    End If
Next i
If xResult <> "" Then
    xResult = VBA.Mid(xResult, VBA.Len(Separator) + 1)
End If
ConcatenateIf = xResult
Exit Function
End Function

5. Luego guarde y cierre este código, regrese a su hoja de trabajo e ingrese esta fórmula en la celda E2, = CONCATENATEIF ($ A $ 2: $ A $ 15, D2, $ B $ 2: $ B $ 15, ",") , mira la captura de pantalla:

doc combine el texto basado en los criterios 4

6. A continuación, arrastre el controlador de relleno hasta las celdas a las que desea aplicar esta fórmula, y todos los nombres correspondientes se han combinado en función de los números de ID, consulte la captura de pantalla:

doc combine el texto basado en los criterios 5

Consejos:

1. En la fórmula anterior, A2: A15 es la información original que desea combinar basada en D2 es el valor único que ha extraído, y B2: B15 es la columna de nombre que desea combinar juntos.

2. Como puede ver, combiné los valores que están separados por comas, puede usar cualquier otro carácter cambiando la coma "," de la fórmula que necesite.


Si usted tiene Kutools for Excel, Con su Filas de combinación avanzadas utilidad, puede concatenar rápida y convenientemente la base de texto en los criterios.

Kutools for Excel : con más de 300 útiles complementos de Excel, de prueba sin límite en días 60.

Después de instalar Kutools for Excel, haz los siguientes pasos:

1. Seleccione el rango de datos que desea combinar según una columna.

2. Hacer clic Kutools > Contenido > Filas de combinación avanzadas, mira la captura de pantalla:

doc combine el texto basado en los criterios 6 6

3. En la Combinar filas basadas en columna cuadro de diálogo, haga clic en la columna ID y luego haga clic Clave primaria para hacer que esta columna sea la columna clave en la que se basan sus datos combinados, vea la captura de pantalla:

doc combine el texto basado en los criterios 7

4. Y luego haz clic Nombre columna que desea combinar los valores, luego haga clic Combinar opción, y elija un separador para los datos combinados, vea la captura de pantalla:

doc combine el texto basado en los criterios 8

5. Después de finalizar esta configuración, haga clic OK para salir del diálogo, y los datos en la columna B se combinaron en base a la columna clave A. Ver captura de pantalla:

doc combine el texto basado en los criterios 9

Para conocer más detalles sobre esta función Combinar filas basadas en columnas.

Con esta característica, el siguiente problema se resolverá lo antes posible:

¿Cómo combinar múltiples filas en una y suma duplicados en Excel?

Descargue y pruebe de forma gratuita Kutools for Excel Now!


Kutools for Excel: con más de 200 útiles complementos de Excel, de prueba sin límite en días 60. Descargar y prueba gratis ahora!


Kutools for Excel: la mejor herramienta de productividad de Office aumenta su productividad en un 80%

  • Super Formula Bar (edite fácilmente varias líneas de texto y fórmula); Diseño de lectura (lee y edita fácilmente un gran número de celdas); Pegar en rango filtrado...
  • Combinar celdas / filas / columnas y mantener datos; Contenido de celdas divididas; Combinar filas duplicadas y suma / promedio... Prevenir células duplicadas; Comparar rangos...
  • Seleccione Duplicado o Único Filas; Seleccionar filas en blanco (todas las celdas están vacías); Super Find y Fuzzy Find en muchos libros de trabajo; Selección aleatoria ...
  • Copia exacta Celdas múltiples sin cambiar la referencia de fórmula; Crear referencias automáticamente a múltiples hojas; Insertar viñetas, Casillas de verificación y más ...
  • Fórmulas favoritas e insertadas rápidamente, Gamas, cuadros y cuadros; Cifrar celdas con contraseña Crear una lista de correo y enviar correos electrónicos ...
  • Extracto del texto, Agregar texto, Eliminar por posición, Eliminar espacio; Crear e imprimir subtotales de paginación; Convertir entre contenido de celdas y comentarios...
  • Súper filtro (guardar y aplicar esquemas de filtro a otras hojas); Clasificación avanzada por mes / semana / día, frecuencia y más; Filtro especial por negrita, cursiva ...
  • Combinar libros de trabajo y hojas de trabajo; Combinar tablas basadas en columnas clave; Dividir datos en varias hojas; Conversión por lotes xls, xlsx y PDF...
  • Funciona con Office 2007-2019 y 365, y es compatible con todos los idiomas. Es fácil de implementar en su empresa. Funciones completas de prueba gratuita de 60-day.
pestaña kte 201905

Office Tab lleva la interfaz con pestañas a Office y hace que su trabajo sea mucho más fácil

  • Habilitar la edición y lectura con pestañas en Word, Excel, PowerPoint, Editor, Acceso, Visio y Proyecto.
  • Abra y cree varios documentos en nuevas pestañas de la misma ventana, en lugar de en nuevas ventanas.
  • ¡Aumenta tu productividad en un 50% y reduce cientos de clics de ratón por ti todos los días!
fondo officetab
Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    AS · 1 days ago
    Hi,

    Very helpful VBA solution. Thank you kindly! My question is: Is there a way to change the code or function for multiple criteria? Although the code works for me, I need it to show values corresponding to a timestamp-interval (>= timestamp A, <= timestamp B)


    Thank you in advance. :)
  • To post as a guest, your comment is unpublished.
    Pete · 6 months ago
    Is there a way to assign this to a button? On large data ranges it takes a while, so ideally I only want it to start the concatenate process once I've finished doing everything else in the sheet. I tried adding a trigger myself but it stopped working completely
  • To post as a guest, your comment is unpublished.
    Merijn · 6 months ago
    BTW i used the VBA solution
  • To post as a guest, your comment is unpublished.
    Merijn · 6 months ago
    Extremely helpfull! After editing it for my sheet i have #VALUE! for some of the unique values.
    I did a countif to see if it could be that there are too many names to concatenate. The two unique values that have the #VALUE! error have 13635 and 19810 results. Is there a way to overcome this?
  • To post as a guest, your comment is unpublished.
    Chantelle · 6 months ago
    How can I ignore blank cells? mine currently displays this:

    ";2503201111@msg.telus.com;;2503202222@msg.telus.com;2508193333@msg.telus.com;2503714444@msg.telus.com;;;;"

    I'd like for the 1st, 3rd and last 3 semi colons not to there/show. TIA
    • To post as a guest, your comment is unpublished.
      skyyang · 6 months ago
      Hello, Chantelle
      When concatenating the cell values ignoring the blank cells, please apply the below User Defined Function:

      Function ConcatenateIf(CriteriaRange As Range, Condition As Variant, ConcatenateRange As Range, Optional Separator As String = ",") As Variant
      Dim xResult As String
      On Error Resume Next
      If CriteriaRange.Count <> ConcatenateRange.Count Then
      ConcatenateIf = CVErr(xlErrRef)
      Exit Function
      End If
      For i = 1 To CriteriaRange.Count
      If CriteriaRange.Cells(i).Value = Condition Then
      If ConcatenateRange.Cells(i).Value <> "" Then
      xResult = xResult & Separator & ConcatenateRange.Cells(i).Value
      End If
      End If
      Next i
      If xResult <> "" Then
      xResult = VBA.Mid(xResult, VBA.Len(Separator) + 1)
      End If
      ConcatenateIf = xResult
      Exit Function
      End Function

      Please try it, hope it can help you!
  • To post as a guest, your comment is unpublished.
    victor · 8 months ago
    thank you very much! This was so simple and helped a lot!!
  • To post as a guest, your comment is unpublished.
    David · 1 years ago
    Is it possible to replace the comma splitter with a line break, i.e. char(10)? Many thanks.
    • To post as a guest, your comment is unpublished.
      skyyang · 1 years ago
      Hello, David,

      To combine the cells with line break, the following User Defined Function may help you.

      Function ConcatenateIf_LineBreak(CriteriaRange As Range, Condition As Variant, ConcatenateRange As Range, Optional Separator As String = ",") As Variant
      Dim xResult As String
      On Error Resume Next
      If CriteriaRange.Count <> ConcatenateRange.Count Then
      ConcatenateIf = CVErr(xlErrRef)
      Exit Function
      End If
      For I = 1 To CriteriaRange.Count
      If CriteriaRange.Cells(I).Value = Condition Then
      xResult = xResult & vbCrLf & ConcatenateRange.Cells(I).Value
      End If
      Next I
      If xResult <> "" Then
      xResult = VBA.Mid(xResult, VBA.Len(Separator) + 1)
      End If
      ConcatenateIf_LineBreak = xResult
      Exit Function
      End Function

      After pasting this code, then apply this formula: =ConcatenateIf_LineBreak(A2:A13,F2,B2:B13,",").

      After getting the results with this formula, you should click the Wrap Text to get the correct results you need.
  • To post as a guest, your comment is unpublished.
    Ahmed · 1 years ago
    So Easy, thank you :)
  • To post as a guest, your comment is unpublished.
    tien minh · 1 years ago
    Hi guys , I got an error #NAME? when I apply formulas CONCATENATEIF in excel file after set VBA code for this, could anyone help me to solve it , thanks som uch
  • To post as a guest, your comment is unpublished.
    krawlis · 1 years ago
    Is there a way to apply this CONCATENATEIF function in a separate sheet? It works when I put it in the same sheet as input data, but i need both tables in different sheets and it doesn't work.
    • To post as a guest, your comment is unpublished.
      Al Boulley · 1 years ago
      Yes, what you want to do is add the function to a module. Go into the VBA editor, right-click on "VBAProject" in the Project Explorer, mouse over the "Insert" menu item, and in that submenu choose "Module". Any functions you put in there will be useable on any sheet in your workbook.
  • To post as a guest, your comment is unpublished.
    MIchele · 2 years ago
    Is there a way to do this on Mac????
    It's exactly what I need - please let me know (or if any mac software would do it that you know of). Thx
  • To post as a guest, your comment is unpublished.
    DJDave · 2 years ago
    I had a problem after pasting this code into Excel 2016 - it contains non-regular spaces (perhaps non-breaking spaces?) which throw up syntax errors which are not evident no matter how closely you look because they are invisible! It is the indentation spaces that are the problem. Paste the code into Word and turn on hidden characters to see them.
    • To post as a guest, your comment is unpublished.
      Yash · 2 years ago
      Wow!! Genius! Worked like a charm! There ARE come spaces that show as a different character. Thanks a lot Dave! Wonder how you came up with the idea! Also, wonder how it works for some other peeps..Anyway, thanks again!
  • To post as a guest, your comment is unpublished.
    Yash · 2 years ago
    Hi!

    concactenateif is Exactly what I was looking for. But unfortunately can´t get it to work Always get a compile error:syntax error. Any ideas?

    In the past, with some imported VBA modules, I have noticed that I had to replace the "," by ";" as in my PC, maybe owing to my regional settings, that's the only way it works. Avidly use the built in sumifs etc. But can´t understand where am going wrong on this one.

    One more possibility that comes to mind is the fact that in office 365, "concat" replaces "concactenate". Can you help out please?

    Thanks in advance,

    Yash
    • To post as a guest, your comment is unpublished.
      DJDave · 2 years ago
      The code uses some non-breaking spaces for indentation, these trip up Excel2016. Hard to spot an invisible error..
  • To post as a guest, your comment is unpublished.
    Ram Bahadur Ale · 2 years ago
    It does not work for the big data range. I found that its working datarange is up to A2:A362. We would be grateful if you share the solution to cover the wider data range like A2:A200000 .....
    Thank you
  • To post as a guest, your comment is unpublished.
    Ram Bahadur Ale · 2 years ago
    It does not work for the big data range. I found it's working range is only up to A2:A362. We would be grateful if you share the solution for the big data range like A2:A200000 ....

    Thank you
    • To post as a guest, your comment is unpublished.
      Chris · 2 years ago
      Works great just slow. I am doing it with 27k lines of text in excel just set it off go for a brew and leave it to run
  • To post as a guest, your comment is unpublished.
    nickado · 2 years ago
    Great!!! Thank you so much!
  • To post as a guest, your comment is unpublished.
    Matt · 2 years ago
    Awesome, thank you! I used the VBA solution and it worked great.
  • To post as a guest, your comment is unpublished.
    Samrat Govekar · 3 years ago
    Extremely helpful and nicely explained
  • To post as a guest, your comment is unpublished.
    Samrat Govekar · 3 years ago
    Explained in detailed and easy to understand, really helped when i was stuck at exact same situation.
  • To post as a guest, your comment is unpublished.
    latha · 3 years ago
    Taking more time for updating the same concatenateif() formula. i have 5000 rows. and its more than 2 hrs now its still updating :(

    Any resolution to make it work fast?
  • To post as a guest, your comment is unpublished.
    Renee · 3 years ago
    I am looking for a way to use a variation of this code to create a variant list based on master variant. Using your example data, I would need to combine columns A and B into unique identifiers and then concatenate those identifiers to each row based on the value in column A, excluding the value from from the combined for that row, and the rest in alpha sort order:

    Master id name id variant list
    CN20150012 Lucy CN20150012-Lucy CN20150012-Andy CN20150012-Monica CN20150012-Phiby
    US20150011 Tommas US20150011-Tommas US20150011-Rose
    CN20150012 Monica CN20150012-Monica CN20150012-Andy CN20150012-Lucy CN20150012-Phiby
    CN20150012 Phiby CN20150012-Phiby CN20150012-Andy CN20150012-Lucy CN20150012-Monica
    US20150011 Rose US20150011-Rose US20150011-Tommas
    UK20150014 Peter UK20150014-Peter UK20150014-Anith UK20150014-Kristi UK20150014-Libin
    JP20150010 Ramon JP20150010-Ramon JP20150010-Brenda JP20150010-James
    UK20150014 Libin UK20150014-Libin UK20150014-Anith UK20150014-Kristi UK20150014-Peter
    UK20150014 Anith UK20150014-Anith UK20150014-Kristi UK20150014-Libin UK20150014-Peter
    JP20150010 James JP20150010-James JP20150010-Brenda JP20150010-James JP20150010-Matus
    CN20150012 Andy CN20150012-Andy CN20150012-Lucy CN20150012-Monica CN20150012-Phiby
    UK20150014 Matus UK20150014-Matus JP20150010-Brenda JP20150010-James
    UK20150014 Kristi UK20150014-Kristi UK20150014-Anith UK20150014-Libin UK20150014-Peter
    JP20150010 Brenda JP20150010-Brenda JP20150010-James JP20150010-Ramon

    I have a sheet with over 1000 lines, each item comes with up to 4 variants. Trying to do this manually is impossible but I cannot find a solution that fits my needs.
  • To post as a guest, your comment is unpublished.
    Tim Blosser · 3 years ago
    This VBA code saved the day for me. Thank you!
  • To post as a guest, your comment is unpublished.
    Manoj · 3 years ago
    Will this tool be able to handle case sensitive combinations such as

    jABC 123
    abc 345
    ABc 678
    ABC 912
  • To post as a guest, your comment is unpublished.
    Enrique · 3 years ago
    Thanks for this code. It was EXACTLY what I needed. You saved me a lot of effort, thank you so much.
    • To post as a guest, your comment is unpublished.
      ConfusedNBusy · 2 years ago
      Thanks for posting this is exactly what I am looking for. I seem not to be saving the vba code correctly. I am getting an error message about ambiguous name found.

      Any suggestions or step by step on the VBA step of this project?

      Thanks
  • To post as a guest, your comment is unpublished.
    Kaladhar · 3 years ago
    This is an excellent solution (VBA code) and it addressed my requirements in minutes. I will refer your site to others and I will visit for everything that I need going forward.