![1 Buscando una cadena:](https://rvso.com/image/1542109/1%20Buscando%20una%20cadena%3A.png)
Tengo una gran lista de grupos de usuarios y sus respectivos nombres de usuario. Ahora me hubiera gustado filtrarlos aún más. Los grupos de usuarios para cada usuario están TODOS en una celda (nombre de usuario - grupos de usuarios), lo que significa que puede haber entre 10 y 15 grupos de usuarios en una sola celda. Solo quiero líneas que constan de "WTS" y luego colocar las líneas de grupos de usuarios que constan de "WTS" en una nueva celda.
¿Cómo voy a hacer esto?
Datos de ejemplo:
Grupos de usuarios 1 WTS_A, BTS_B, WTS_C,
Quiero WTS_A y WTS_C.
Respuesta1
Según mi comprensión de su pregunta, sugiero una solución de 2 pasos.
Paso 1- Utilice la función Texto a columnas en Excel y convierta el texto de una sola columna en varias columnas. Utilice espacio y coma como delimitadores.
Paso 2- Utilice una función VBA personalizada para unir solo las celdas deseadas en una sola celda delimitada por coma.
Una vez que haya terminado con el proceso de Texto a columnas, presione ALT + F11 en la hoja para abrir el Editor VBA. Desde el menú Insertar Insertar módulo. Se creará un Módulo1 y se abrirá su editor de código. De lo contrario, haga doble clic en Módulo1 en el panel izquierdo para abrir su editor de código.
Pegue el siguiente código en el mismo.
Public Function TXTJOIN(argument1 As Range) 'Accept input range
result = ""
colcounter = argument1.Columns.Count
rowcounter = argument1.Rows.Count
If rowcounter > 1 Then
TXTJOIN = CVErr(xlErrValue) 'If row counter > 1 return #VALUE! Error
Exit Function
End If
If colcounter > 255 Then
TXTJOIN = CVErr(xlErrValue) 'If col counter > 255 return #VALUE! Error
Exit Function
End If
For Each element In argument1
If Left(element, 3) = "WTS" And Len(element) > 3 Then
result = result & element & ","
End If
Next element
If result = "" Then
TXTJOIN = result
Else
TXTJOIN = Left(result, Len(result) - 1)
End If
End Function
Esto crea una función TXTJOIN personalizada para verificar la cadena inicial como "WTS" y unir todas esas columnas delimitadas por comas.
Guarde y salga del editor VBA. De regreso a la hoja de trabajo, ahora vaya a la columna del extremo derecho e ingrese esta función especificando el rango de columnas aplicable. Cópielo o arrástrelo hacia abajo a lo largo de las filas correspondientes. Debería obtener la cadena deseada en las celdas respectivas. Copie solo los valores en otros lugares y elimine el resto de las columnas para limpiar la hoja.
¡Obtendrás #VALOR! Error de esta función en situaciones como.
Le pasas una matriz multidimensional, por ejemplo, A1:D12
Le pasas más de 255 columnas.
Le pasa una matriz de varias filas, por ejemplo, A1: A12
Hazme saber si esto funciona para ti.
Limitación: esto supone que los ID de usuario están separados por espacio o coma. Si dos están juntos sin coma ni espacio, esta función no los identificará por separado.
Respuesta2
Tiene dos tareas: buscar datos válidos (interesantes) y luego formatearlos.
1 Buscando una cadena:
La búsqueda de una cadena como WTS se puede realizar con las funciones Buscar o Buscar. Ambos le mostrarán un valor numérico cuando se encontró la cadena, como esta: ENCONTRAR("WTS";A1) o BUSCAR("WTS";A1)
Haga esto para la primera fila. Seleccione la celda con la copia de su fórmula y luego seleccione las celdas debajo de ella para todas sus filas de datos y péguelas. La fórmula se actualizará automáticamente a FIND("WTS";B1)...FIND("WTS";C1)...
Sugiero filtrar manualmente en este punto para ocultar las filas que dan error: #¡VALOR!
Simplemente elimine aquellas filas que no le den resultados.
2 Divida los datos de los grupos de usuarios:
Cuando tenga varias entradas en su celda delimitadas por una cadena (como un guión "-"), seleccione sus celdas y use Datos -> Texto en columnas -> Delimitado -> Agregue su delimitador - elija Otro e ingrese un guión.
Esto tomará sus datos y los colocará en varias celdas, como este Grupo de usuarios1 Grupo de usuarios2 Grupo de usuarios3...
3 consejo adicional:
Si desea utilizar la función de búsqueda o búsqueda en las múltiples celdas que acaba de dividir, concatene las celdas en una sola celda (básicamente invierta la división) y luego busque los valores concatenados. A7 = CONCATENAR(A1;A2;A3) A8 = ENCONTRAR("WTS";A7)