Estoy compilando una base de datos de información de la dirección de la empresa, incluido el personal clave de cada empresa. La hoja de cálculo de Google que heredé para este proyecto incluye una columna para 'personal clave' (en la columna B), con varios nombres de personal clave enumerados en la misma celda, separados por saltos de línea (es decir, CHAR (10)). Hay un negocio por fila. El número de líneas en la celda 'personal clave' varía fila por fila. Mi hoja inicial se ve así:
Necesito hacer lo siguiente para optimizar esta hoja:
- divida cada celda de 'personal clave' de varias líneas para que cada nombre de personal clave aparezca en su propia fila. Esto requiere que se inserten nuevas filas debajo de la fila original.
- duplicar los datos de todas las demás celdas en la fila original (es decir, de las columnas A y C: E), de modo que cada nueva fila contenga los datos completos de cada negocio
- Necesito un proceso automatizado : tendré que procesar alrededor de 1000 empresas, así que no puedo hacer esto con ningún paso manual
La hoja debería verse así:
=TRANSPOSE(SPLIT(B1,CHAR(10)))
Obviamente, el uso solo es parte del camino: no inserta nuevas filas y no duplica las entradas de columna circundantes. Toda ayuda agradecidamente aceptada!
fuente
Respuestas:
En primer lugar, perdón por la respuesta tardía, pero tengo una solución con la que trabajar.
Código
Explicado
El script evalúa cada fila, y particularmente la segunda columna de cada fila (en las matrices de JavaScript están basadas en cero, por lo que la columna 2 corresponde al índice 1 de la matriz). Divide el contenido de esa celda, en múltiples valores y usa
"\n"
como delimitador (avance de línea). Después de eso, agrega la información existente a una matriz y solo agrega los resultados individuales, cuando llega al índice 1 (k == 1)
. La fila recién preparada se agrega a otra matriz, que se devuelve para mostrar el resultado.Captura de pantalla
datos
resultado
Ejemplo
He creado un archivo de ejemplo para usted: celdas de varias líneas en nuevas filas .
Agregue el guión en Herramientas> Editor de guiones y presione el botón Guardar.
fuente
Una solución repetible necesitará un script.
Pero para un esfuerzo de una sola vez, podría usar
=SPLIT(B3,CHAR(10))
. Esto le dará todos los nombres de las personas en columnas auxiliares lado a lado, como esta:Copiar / Pegar especial, valora el contenido de la columna auxiliar.
Y para cada columna auxiliar que se usa (ojalá no demasiadas, porque ojalá no tenga demasiadas personas en una sola empresa), copie y pegue manualmente el bloque de filas al final del bloque actual. (Esa no es una gran descripción, pero se entiende).
fuente
Para las personas que podrían no comprender de inmediato cómo usar la útil función personalizada en la respuesta aceptada :
Necesita más de una hoja, en el ejemplo, las dos hojas son
DATA
yRESULT
. LaRESULT
hoja está vacía hasta que se haya ejecutado la consulta. Puede ver la consulta que se refiere a laDATA
hoja en la captura de pantalla de Jacob.Lo más probable es que necesite modificar el valor de comparación de la
k
línea 8 que se refiere a la columna donde se deben encontrar sus datos para analizar. El mismo número deberá ir al segundo valor de la matriz en la línea 4.Es posible que deba modificar el delimitador en la línea 4, que actualmente está
\n
Para hacer todo esto un poco más fácil, tomé el mismo código y extraje el delimitador y la columna de destino en las variables establecidas en la parte superior de la función. Como Jacob menciona el conteo de columnas objetivo comienza con 0 como el primer número.
Referencias
fuente