¿Transformar una cadena que está en una celda, en una matriz de rangos de filas y columnas, de alguna manera?

¿Transformar una cadena que está en una celda, en una matriz de rangos de filas y columnas, de alguna manera?

Tengo la intención de transformar estos nombres de la lista, en una matriz de rangos como esta que se muestra en la imagen, al depurar la fórmula quiero que me muestre exactamente una matriz de rangos de filas y columnas, ¿hay alguna manera de transformar estos nombres en ¿Una gama como esta?ingrese la descripción de la imagen aquí

Respuesta1

Si desea la cadena de texto, utilice:

="={"""&TEXTJOIN(""",""",,SUBSTITUTE($A$2:$A$5," ","""/""")) & """}"

Si desea una matriz real que se usará en otro lugar, utilice:

IFERROR(FILTERXML("<a><b>"&SUBSTITUTE(TRANSPOSE($A$2:$A$5)," ","</b><b>")&"</b></a>","//b["&ROW($A$1:$A$4)&"]"),"")

Esto creará una matriz de 4x4 que se puede usar en otra fórmula. Dependiendo de la versión de cada uno, usar esto en otra fórmula requerirá el uso de Ctrl-Shift-Enter en lugar de Enter al salir del modo de edición para forzar la fórmula matricial.

No conozco ninguna forma de hacer lo que quiere F9y mostrar la matriz en la barra de fórmulas.

Respuesta2

Bueno, la cadena literal, menos el error tipográfico "JONH" que simplemente no voy a replicar, se puede obtener con la fórmula de Scott Craner ajustada ligeramente (y usé SEQUENCE()en lugar del ROWS()truco, tengo que usar las nuevas funciones para acostumbrarme). ellos, ¿eh?), luego se usó como base para algunos trabajos con cuerdas:

="={"""&TEXTJOIN("""\""",,INDEX(TRANSPOSE(B234:B237),SEQUENCE(4)))&""","""&TEXTJOIN("""\""",,INDEX(TRANSPOSE(C234:C237),SEQUENCE(4)))&""","""&TEXTJOIN("""\""",,INDEX(TRANSPOSE(D234:D237),SEQUENCE(4)))&""","""&TEXTJOIN("""\""",,INDEX(TRANSPOSE(E234:E237),SEQUENCE(4)))&"""}"

Tenga en cuenta que si bien proporciona el resultado literal deseado, el resultado esNOuna constante de matriz desde la perspectiva de Excel y NO será utilizada precisamente como F9sería el resultado.

Es solo una cadena de texto para todos los aspectos de Excel. Por lo tanto, usarlo dentro de una fórmula probablemente resultará en un fracaso o en un éxito por pura casualidad. Quizás también funcione bien para algunos usos. Pero de ninguna manera es lo mismo ni equivalente a Excel, ya que la constante de matriz de uso interno resalta algo y presiona F9crea.

Dicho esto, es feo e hinchado. Supongo que no sigo el hilo de un lado a otro en los comentarios, así que no veo por qué Scott Craner usó TRANSPOSE()lo que me obligó a hacerlo también, ya que parece que el resultado deseado es de izquierda a derecha (comenta arriba con "A234 = " Jonh",...) así que al sacarlo y luego ajustar su A2:A5 para que sea A1:A4 (o dejar caer una fila para mis experimentos), obtengo:

=IFERROR(FILTERXML("<a><b>"&SUBSTITUTE(($A$234:$A$237)," ","</b><b>")&"</b></a>","//b["&SEQUENCE(1,4)&"]"),"")

para su fórmula y reelaborando la mía, luego mezclando la suya para usar una sola fórmula, obtengo:

="={"""&TEXTJOIN("""\""",,B234:E234)&""","""&TEXTJOIN("""\""",,B235:E235)&""", """&TEXTJOIN("""\""",,B236:E236)&""","""&TEXTJOIN("""\""",,B237:E237)&"""}"

que, por cierto, como tiene un patrón y una construcción repetitiva, uno puede usar los viejos CONCATENATE()trucos union operatorpara construirlo inmensamente con filas y columnas ajustándose muy bien antes de finalmente concatenarlo, pegarlo de manera especial como valor, luego colocar un "=" antes para convertirlo en una fórmula. Aún más fácil ahora. Para datos que no están en cuatro pequeñas filas y menos de cinco elementos.

Entonces, eso da la cadena resultante deseada expresada, aunque nuevamente, no es un resultado que Excel consideraría igual a la constante de matriz que ve después de usar F9como se mencionó.

Y la fórmula modificada de Scott Craner daría el resultado de celda individual descrito en el comentario. Que a su vez podría usarse dentro de una fórmula para permitir que Excel cree esa constante de matriz interna. Pero NO, creo, usando la fórmula de cadena (que es un callejón sin salida, desde el punto de vista del cálculo), sino más bienusando la fórmula (ajustada) de Scott Craner dentro de cualquier fórmula que necesite en so Excel will evaluate it to the desireduna matriz constantey luego, en lugar de llenar estas 16 celdas, páselo por la cadena de cálculo dentro de esa fórmula.

Me acabo de dar cuenta de que es "Scott Tenorman" (o parecido) en South Park, de quien Cartman... se venga... ¡Ya no me molesta vagamente decir "Scott Craner" una y otra vez!

información relacionada