Come etichettare / etichettare gli articoli in un foglio di calcolo


14

Sono alle prime armi con i fogli di calcolo, quindi spero che mi perdonerai se farò una domanda super ovvia.

È possibile utilizzare i tag in Excel / Google Spreadsheet? Sto creando un foglio di calcolo per registrare tutti gli articoli e i libri che sto leggendo. Di 'che sto leggendo "Io, Claudio". Voglio dargli questi tag: storia, finzione, biografia, disabilità, politica, dramma. Quindi, se voglio visualizzare tutti gli articoli / libri taggati con "politica", posso forse cercare / visualizzare / pivot con quel tag.

Forse preferibilmente, i tag dovrebbero essere tutti in una cella con ogni parola separata da una virgola. Se ogni parola fosse contenuta in una cella a parte, renderebbe il tavolo davvero disordinato, credo.

Sono aperto anche ad altre soluzioni di etichettatura.

Grazie!


Non ho mai visto una soluzione tag in Excel, ma ciò non significa che non ce ne sia una. Forse dai un'occhiata a evernote
Raystafarian,

Risposte:


13

Per quanto ne so non ci sono funzionalità integrate che possono analizzare e riepilogare i tag separati da virgola in Excel. Ovviamente puoi creare la tua soluzione con le funzioni del foglio di lavoro e un po 'di VBA. Ecco una rapida soluzione per farlo.

Passaggio 1 : premere Alt+ F11per aprire il riquadro dell'editor VBA in Excel. Inserisci un nuovo modulo e incolla questo codice per una funzione personalizzata.

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

Questa funzione ti consentirà di creare elenchi separati da virgole per riepilogare i dati dei tag che hai.

Passaggio 2 : in un foglio di lavoro, immettere in una cella (H2 nell'esempio seguente) il tag che si desidera cercare. Nella cella a destra, inserisci la seguente formula premendo Ctrl+ Shift+ Enter.

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

Premendo Ctrl+ Shift+ Enter, si immette la formula come formula di matrice. Apparirà circondato dalla {...}barra della formula. Si noti che nella formula $B$2:$B$6è l'intervallo che contiene tutti i tag per gli elementi elencati in $A$2:$A$6.

inserisci qui la descrizione dell'immagine

MODIFICA:
Se non ti dispiace che le tue corrispondenze vengano elencate in una colonna anziché in un elenco in una cella, puoi restituire le corrispondenze per i tag utilizzando solo le funzioni del foglio di lavoro.

Dove i titoli sono in Column A, i tag sono in Column B, e il tag che si sta cercando è in H2, è possibile utilizzare la seguente formula di matrice in I2e riempire giù, per quanto è necessario:

=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)),"")

inserisci qui la descrizione dell'immagine

La formula funziona innanzitutto formando una matrice di numeri in base al fatto che i tag in ciascuna riga contengano il termine di ricerca. Se viene trovata una corrispondenza, il numero di riga viene memorizzato nella matrice. Se non viene trovato, 2000000 viene archiviato nell'array. Successivamente, la SMALL(<array>,ROW()-1)parte della formula restituisce il ROW()-1valore più piccolo dall'array. Successivamente, questo valore viene passato come argomento dell'indice alla INDEX()funzione, dove viene restituito il valore di quell'indice nella matrice di titoli. Se un numero maggiore del numero di righe nella matrice del titolo viene passato INDEX()come argomento, viene restituito un errore. Poiché 2000000 viene passato come argomento quando non viene trovata alcuna corrispondenza, viene restituito un errore. La IFERROR()funzione quindi ritorna ""in questo caso.

È importante capire come ROW()viene utilizzato in questa formula. Se si desidera visualizzare l'elenco dei risultati che iniziano in una riga diversa, sarà necessario regolare il secondo argomento della SMALL()funzione in modo che restituisca il primo valore più piccolo dall'array. Ad esempio, se il tuo elenco di risultati inizia nella riga 1 anziché nella riga 2, utilizzerai SMALL(...,ROW())invece di SMALL(...,ROW()-1).

Inoltre, se l'elenco di titoli e tag non inizia nella riga 1, sarà necessario modificare anche la formula. Il secondo argomento della IF()funzione deve essere modificato in modo che una corrispondenza nella prima riga dei dati restituisca 1. Ad esempio, se l'elenco di titoli inizia nella riga 2 anziché nella riga 1, è necessario includere la formula IF(...,ROW($A$2:$A$7)-1,...)anziché IF(...,ROW($A$1:$A$6),...).


Wow, funziona perfettamente! Lo preferisco su Google Spreadsheet, però. Ma utilizza JavaScript. Proverò a fare qualcosa di simile lì, anche se sono un principiante assoluto e completo con la lingua. Solo altre due domande: cosa significa "riassumere" i dati? Cosa fa il tuo codice nel passaggio 1? Sto ponendo questa domanda in particolare perché penso che dovrei fare lo stesso con JavaScript nel foglio di calcolo di Google. Grazie mille per la tua soluzione!
nusantara,

Fantastico, sono contento che sia utile. Con "riassumere" intendo semplicemente creare un elenco separato da virgole di titoli corrispondenti. Il VBA è necessario per questo scopo. Con le funzioni di Excel integrate, è abbastanza semplice creare una formula di array in grado di selezionare i tag corrispondenti. Tuttavia, non è possibile restituire questi risultati in una cella senza VBA, poiché la CONCATENATEfunzione in Excel non può prendere un array come argomento (legge solo il primo elemento dall'array se lo provi). La funzione VBA è creata per creare elenchi separati da virgole da una matrice di valori.
Eccellente il

Dopo aver scritto la risposta sopra, mi sono reso conto che esiste un modo per fare qualcosa di simile senza VBA. Invece di restituire l'elenco di titoli corrispondenti in una cella, è possibile restituire una colonna di titoli corrispondenti. Posso modificare il mio post per includere anche questo metodo se sei interessato.
Eccellente il

È possibile senza VBA? Sarebbe meglio, penso. Se non è troppo scomodo, sì, sarebbe fantastico se tu potessi includere il metodo che hai citato. Sarebbe così utile per chiunque cerchi questo argomento! Grazie per aver spiegato "riassunto". Ho provato anche la concatenazione ma, sì, non potevo usarla come volevo. Ora so che non può comportarsi come una discussione.
nusantara,

Si è possibile. Proverò a pubblicare qui la soluzione tra qualche minuto. Scusa per il ritardo!
Eccellente il

2

Mentre lo fa a livello di programmazione funziona bene in alcuni casi ho trovato un approccio manuale funzionato per me. Usando le colonne per i tag puoi facilmente taggare un elemento riga inserendo uno 0 nella colonna. Quindi hai una riga e inserisci 1s in ciascuna delle colonne del tag per quella riga (puoi colorare questa riga). Quindi, quando si ordina in base a uno dei tag, la riga 1s (blu) funge da separatore. Tra i risultati filtrati (0s) e tutto il resto (_).

Questo ha alcuni vantaggi. 1. Non è necessario digitare il tag ogni volta. 2. È possibile incrociare facilmente i riferimenti per verificare se sono presenti elementi duplicati o simili che possono essere ridotti a uno.


1

Un'altra idea:

Utilizzare la funzionalità di filtro integrata. Filtra per la colonna Tag, quindi puoi cercare le righe che contengono un determinato tag.

Una riga con l'elenco dei tag: commedia, horror, romanticismo

apparirebbe quando si cerca uno di quei tre tag.


1

Il mio approccio non VBA è quello di elencare i tag in una colonna (diciamo la colonna H), separando gli elementi con virgole. Da lì, uso una combinazione di "Testo in colonne" e "Rimuovi duplicati" per ottenere il mio elenco di tag. Copio oltre questo nella riga di intestazione del mio foglio principale (in questo caso, a partire dalla colonna L. Quindi, in ogni cella sotto le singole intestazioni dei tag, inserisci quanto segue:

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

Questo offre il meglio di entrambi i mondi: la colonna tag (H) è facile da leggere per le persone; le singole colonne dei tag (con i loro 0 e 1) sono facili da leggere per il computer. È dinamico se rimani all'interno del set di tag specificato; in caso contrario, è necessario aggiungere il nuovo tag nella riga di intestazione, quindi copiare le formule.

Da lì, i tavoli pivot sono i tuoi amici.


0

Non mi è chiaro esattamente come si desidera utilizzare i tag. Ma in Fogli Google, puoi utilizzare la funzione SPLIT () per dividere una stringa di tag (delimitata da spazi, virgole o qualsiasi cosa tu voglia) in diverse altre celle, e sono sicuro che anche Excel ha una funzione che può cercare un cella per un tag.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.