Cómo etiquetar / etiquetar elementos en una hoja de cálculo

14

Soy un novato en las hojas de cálculo, así que espero que me perdones si hago una pregunta súper obvia.

¿Es posible usar etiquetas en Excel / Google Spreadsheet? Estoy creando una hoja de cálculo para registrar todos los artículos y libros que estoy leyendo. Digamos que estoy leyendo "Yo, Claudio". Quiero darle estas etiquetas: historia, ficción, biografía, discapacidad, política, drama. Entonces, si quiero mostrar todos los artículos / libros etiquetados con "política", tal vez pueda buscar / mostrar / pivotar con esa etiqueta.

Quizás preferiblemente, las etiquetas deben estar todas en una celda con cada palabra separada por una coma. Si cada palabra estuviera en una celda propia, creo que la mesa sería realmente desordenada.

También estoy abierto a otras soluciones de etiquetado.

¡Gracias!

nusantara
fuente
Nunca he visto una solución de etiqueta en Excel, pero eso no quiere decir que no haya una. Tal vez echa un vistazo a evernote
Raystafarian

Respuestas:

13

Hasta donde sé, no hay características integradas que puedan analizar y resumir etiquetas separadas por comas en Excel. Por supuesto, puede crear su propia solución con funciones de hoja de trabajo y un poco de VBA. Aquí hay una solución rápida para hacer esto.

Paso 1 : Presione Alt+ F11para abrir el panel del editor VBA en Excel. Inserte un nuevo módulo y péguelo en este código para una función personalizada.

Public Function CCARRAY(rr As Variant, sep As String)
'rr is the range or array of values you want to concatenate.  sep is the delimiter.
Dim rra() As Variant
Dim out As String
Dim i As Integer

On Error GoTo EH
rra = rr
out = ""
i = 1

Do While i <= UBound(rra, 1)
    If rra(i, 1) <> False Then
        out = out & rra(i, 1) & sep
    End If
    i = i + 1
Loop
out = Left(out, Len(out) - Len(sep))
CCARRAY = out
Exit Function

EH:
rra = rr.Value
Resume Next

End Function

Esta función le permitirá crear listas separadas por comas para resumir los datos de etiqueta que tiene.

Paso 2 : en una hoja de trabajo, ingrese en una celda (H2 en el ejemplo a continuación) la etiqueta que desea buscar. En la celda a la derecha, ingrese la siguiente fórmula presionando Ctrl+ Shift+ Enter.

=IFERROR(CCARRAY(IF(NOT(ISERROR(FIND(H2,$B$2:$B$6))),$A$2:$A$6),", "),"No matches found.")

Al presionar Ctrl+ Shift+ Enter, está ingresando la fórmula como una fórmula de matriz. Aparecerá rodeado por {...}en la barra de fórmulas. Tenga en cuenta que en la fórmula $B$2:$B$6está el rango que contiene todas las etiquetas para los elementos enumerados en $A$2:$A$6.

ingrese la descripción de la imagen aquí

EDITAR:
si no le importa que sus coincidencias aparezcan en una columna en lugar de en una lista en una celda, puede devolver coincidencias para las etiquetas utilizando solo las funciones de la hoja de trabajo.

Donde sus títulos se encuentran en Column A, las etiquetas están en Column B, y la etiqueta que está buscando está en H2, puede utilizar la siguiente fórmula de matriz en I2y llenar hacia abajo tanto como sea necesario:

=IFERROR(INDEX($A$1:$A$6,SMALL(IF(NOT(ISERROR(FIND($H$2,$B$1:$B$6))),ROW($B$1:$B$6),2000000),ROW()-1)),"")

ingrese la descripción de la imagen aquí

La fórmula funciona formando primero una matriz de números en función de si las etiquetas de cada fila contienen el término de búsqueda. Si se encuentra una coincidencia, el número de fila se almacena en la matriz. Si no se encuentra, 2000000 se almacena en la matriz. A continuación, la SMALL(<array>,ROW()-1)parte de la fórmula devuelve el ROW()-1valor más pequeño de la matriz. A continuación, este valor se pasa como un argumento de índice a la INDEX()función, donde se devuelve el valor en ese índice en la matriz de títulos. Si se pasa un número mayor que el número de filas en la matriz de títulos INDEX()como argumento, se devuelve un error. Como 2000000 se pasa como argumento cuando no se encuentran coincidencias, se devuelve un error. La IFERROR()función luego regresa ""en este caso.

Es importante comprender cómo ROW()se usa en esta fórmula. Si desea mostrar su lista de resultados comenzando en una fila diferente, deberá ajustar el segundo argumento de la SMALL()función para que devuelva el primer valor más pequeño de la matriz. Por ejemplo, si su lista de resultados comienza en la Fila 1 en lugar de la Fila 2, usaría en SMALL(...,ROW())lugar de SMALL(...,ROW()-1).

Además, si su lista de títulos y etiquetas no comienza en la Fila 1, también deberá ajustar la fórmula. El segundo argumento de la IF()función debe ajustarse para que una coincidencia en la primera fila de sus datos devuelva 1. Por ejemplo, si su lista de títulos comienza en la Fila 2 en lugar de la Fila 1, necesitará la fórmula para incluir en IF(...,ROW($A$2:$A$7)-1,...)lugar de IF(...,ROW($A$1:$A$6),...).

Excellll
fuente
¡Guau, esto funciona perfectamente! Sin embargo, lo prefiero en la hoja de cálculo de Google. Pero usa JavaScript. Intentaré hacer algo similar allí, aunque soy un principiante completo y completo con el idioma. Solo dos preguntas más: ¿Qué significa "resumir" los datos? ¿Qué hace tu código en el paso 1? Estoy haciendo esta pregunta en particular porque creo que podría tener que hacer lo mismo con JavaScript en la hoja de cálculo de Google. ¡Muchas gracias por tu solución!
nusantara
Genial, me alegro de que sea de utilidad. Por "resumir", me refiero a crear una lista separada por comas de títulos coincidentes. Se requiere el VBA para este propósito. Con las funciones integradas de Excel, es bastante sencillo crear una fórmula de matriz que pueda seleccionar etiquetas coincidentes. Sin embargo, no es posible devolver estos resultados en una celda sin VBA, porque la CONCATENATEfunción en Excel no puede tomar una matriz como argumento (solo lee el primer elemento de la matriz si lo prueba). La función VBA está hecha para crear listas separadas por comas a partir de una matriz de valores.
Excellll
Después de escribir la respuesta anterior, me di cuenta de que hay una manera de hacer algo similar sin VBA. En lugar de devolver la lista de títulos coincidentes en una celda, se puede devolver una columna de títulos coincidentes. Puedo editar mi publicación para incluir este método también si estás interesado.
Excellll
¿Es posible sin VBA? Eso sería mejor, creo. Si no es demasiado inconveniente, sí, sería increíble si pudiera incluir el método que mencionó. ¡Sería muy útil para cualquiera que busque este tema! Gracias por explicar "resumen". También probé la concatenación, pero sí, no pude usarla como quería. Ahora sé que no puede comportarse como una discusión.
nusantara
Si es posible. Trataré de publicar la solución aquí en unos minutos. ¡Perdón por el retraso!
Excellll
2

Si bien hacer esto programáticamente funciona bien, en algunos casos encontré que un enfoque manual me funcionó. Usando columnas para etiquetas, puede etiquetar fácilmente un elemento de fila ingresando un 0 en la columna. Luego tiene una fila e ingresa 1s en cada una de las columnas de etiquetas para esa fila (puede colorear esta fila). Luego, cuando ordena por una de las etiquetas, la fila 1s (azul) actúa como un separador. Entre sus resultados filtrados (0s) y todo lo demás (_).

Esto tiene algunas ventajas. 1. No tiene que escribir su etiqueta cada vez. 2. Puede hacer referencias cruzadas fácilmente para verificar si tiene elementos duplicados o similares que se pueden reducir a uno.

James Stephen Brown
fuente
1

Otra idea:

Use la funcionalidad de filtro incorporada. Filtre por la columna Etiquetas, luego puede buscar filas que contengan una etiqueta determinada.

Una fila con la lista de etiquetas: comedia, horror, romance

aparecería al buscar cualquiera de esas tres etiquetas.

mate
fuente
1

Mi enfoque que no es VBA es enumerar etiquetas en una columna (digamos la columna H), separando los elementos con comas. A partir de ahí, uso una combinación de "Texto en columnas" y "Eliminar duplicados" para obtener mi lista de etiquetas. Copio más allá de esto en la fila de encabezado de mi hoja principal (en este caso, comenzando en la columna L. Luego, en cada celda debajo de los encabezados de etiquetas individuales, ingrese lo siguiente:

=IF((ISNUMBER(SEARCH(L$1,$H2)))=TRUE,1,0)

Esto ofrece lo mejor de ambos mundos: la columna de etiqueta (H) es fácil de leer para las personas; Las columnas de etiquetas individuales (con sus 0 y 1) son fáciles de leer para la computadora. Es dinámico si permanece dentro del conjunto de etiquetas dado; de lo contrario, debe agregar su nueva etiqueta a la fila del encabezado y luego copiar sus fórmulas.

A partir de ahí, las tablas dinámicas son tu amigo.

user2024015
fuente
0

No me queda claro exactamente cómo desea utilizar las etiquetas. Pero en Google Sheets, puede usar la función SPLIT () para dividir una cadena de etiquetas (delimitadas por espacios, comas o lo que desee) en varias otras celdas, y estoy seguro de que incluso Excel tiene una función que puede buscar un celda para una etiqueta.

Michael Scheper
fuente