TOP

Concatenación de texto en celdas por condición (CONCATIF)

Descripción

Digamos que tenemos una tabla de préstamos con la garantía correspondiente. Necesitamos, por ejemplo, mostrar una lista de garantías para cada préstamo en una celda.

Excel sólo puede proporcionarnos una función simple CONCATENATE, pero necesitarás seleccionar las celdas necesarias manualmente. Para simplificar el trabajo, necesitamos automatizar el proceso de combinar texto de diferentes celdas según una condición. Entonces, si necesita "concatenar" rápidamente texto de diferentes celdas usando la condición IF, entonces debe escribir su propia función.


Tabla de préstamos garantizados:

Código VBA para la función CONCATIF

Entonces, creemos nuestra propia función y llamémosla CONCATIF. Para ello abre el menú Service - Macros - Visual Basic Editor, inserta el módulo VBA (menú Insert - Module) y copia allí el texto de esta función:

Function CONCATIF(Table As Range, SearchValue As Variant, Table2 As Range)
	'moonexcel.com.ua
	Dim i As Integer
	
	For i = 1 To Table.Rows.Count
		If Table.Cells(i, 1) = SearchValue Then
			If Not IsEmpty(Table2.Cells(i, 1).Value) Then
			    CONCATIF = CONCATIF & Table2.Cells(i, 1).Value & "; "
			End If
		End If
	Next i
	
	CONCATIF = Left(CONCATIF, Len(CONCATIF) - 2)
End Function

Cierre Visual Basic Editor y regrese a Excel.

Ahora, en Function wizard en la categoría User defined puedes encontrar nuestra función CONCATIF y usarla. La sintaxis de esta función es la siguiente:

=CONCATIF (columna de valores buscados; valores buscados; columna de datos para combinar)

Tendremos el siguiente resultado:

Y finalmente, necesita bloquear los rangos A2:A10 y C2:C10 con un signo de dólar ($) para que los rangos no se muevan al final cuando copie el función.

Artículos sobre el tema:

  • Conectando texto de diferentes celdas (CONCATENATE)
  • Dividir el texto en varias columnas
  • División automática de texto mediante el separador especificado (SPLITUP)
  • Seleccionando parte de los caracteres del texto (LEFT, RIGHT, MID)