Como rotular / marcar itens em uma planilha

14

Sou iniciante em planilhas, então espero que você me perdoe se eu fizer uma pergunta super óbvia.

É possível usar tags na planilha do Excel / Google? Estou criando uma planilha para registrar todos os artigos e livros que estou lendo. Diga que estou lendo "Eu, Cláudio". Quero atribuir-lhe estas tags: história, ficção, biografia, deficiência, política, drama. Então, se eu quiser exibir todos os artigos / livros marcados com "policy", talvez eu possa pesquisar / exibir / alternar com essa tag.

Talvez, de preferência, todas as tags estejam em uma célula, com cada palavra separada por vírgula. Se cada palavra estivesse em uma célula própria, isso tornaria a mesa muito confusa, eu acho.

Também estou aberto a outras soluções de rotulagem.

Obrigado!

nusantara
fonte
Eu nunca vi uma solução de tags no Excel, mas isso não significa que não há uma. Talvez confira evernote
Raystafarian

Respostas:

13

Tanto quanto sei, não há recursos internos que possam analisar e resumir tags separadas por vírgula no Excel. Obviamente, você pode criar sua própria solução com funções de planilha e um pouco de VBA. Aqui está uma solução rápida para fazer isso.

Etapa 1 : pressione Alt+ F11para abrir o painel do editor VBA no Excel. Insira um novo módulo e cole neste código para uma função 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 função permitirá que você crie listas separadas por vírgula para resumir os dados da tag que você possui.

Etapa 2 : em uma planilha, insira em uma célula (H2 no exemplo abaixo) a tag que você deseja pesquisar. Na célula à direita, digite a seguinte fórmula pressionando Ctrl+ Shift+ Enter.

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

Pressionando Ctrl+ Shift+ Enter, você está inserindo a fórmula como uma fórmula de matriz. Aparecerá cercado {...}na barra de fórmulas. Note-se que na fórmula $B$2:$B$6é o intervalo que contém todas as marcas para os itens listados no $A$2:$A$6.

insira a descrição da imagem aqui

EDIT:
Se você não se importa que suas correspondências sejam listadas em uma coluna, e não em uma lista em uma célula, você pode retornar correspondências para tags usando apenas as funções da planilha.

Onde seus títulos estão em Column A, as tags estão em Column B, ea marca que você está procurando está em H2, você pode usar a seguinte fórmula de matriz em I2e preencher para baixo tanto quanto você precisa:

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

insira a descrição da imagem aqui

A fórmula funciona formando primeiro uma matriz de números com base em se as tags em cada linha contêm o termo de pesquisa. Se uma correspondência for encontrada, o número da linha é armazenado na matriz. Se não for encontrado, 2000000 é armazenado na matriz. A seguir, a SMALL(<array>,ROW()-1)parte da fórmula retorna o ROW()-1menor valor da matriz. Em seguida, esse valor é passado como um argumento de índice para a INDEX()função, onde o valor nesse índice na matriz de títulos é retornado. Se um número maior que o número de linhas na matriz de títulos for passado INDEX()como argumento, um erro será retornado. Como 2000000 é passado como argumento quando nenhuma correspondência é encontrada, um erro é retornado. A IFERROR()função então retorna ""neste caso.

É importante entender como ROW()está sendo usado nesta fórmula. Se você deseja exibir sua lista de resultados iniciando em uma linha diferente, será necessário ajustar o segundo argumento da SMALL()função para que ela retorne o primeiro menor valor da matriz. Por exemplo, se sua lista de resultados começa na Linha 1 em vez da Linha 2, você usaria em SMALL(...,ROW())vez de SMALL(...,ROW()-1).

Além disso, se sua lista de títulos e tags não começar na Linha 1, você precisará ajustar a fórmula também. O segundo argumento da IF()função deve ser ajustado para que uma correspondência na primeira linha dos seus dados retorne 1. Por exemplo, se sua lista de títulos começar na Linha 2 em vez da Linha 1, você precisará da fórmula para incluir em IF(...,ROW($A$2:$A$7)-1,...)vez de IF(...,ROW($A$1:$A$6),...).

Excellll
fonte
Uau, isso funciona perfeitamente! Eu prefiro na Planilha do Google, no entanto. Mas ele usa JavaScript. Vou tentar fazer algo semelhante lá, embora eu seja um iniciante completo e absoluto no idioma. Apenas mais duas perguntas: O que significa "resumir" os dados? O que seu código na etapa 1 faz? Estou fazendo essa pergunta em particular porque acho que devo fazer o mesmo com o JavaScript na planilha do Google. Muito obrigado pela sua solução!
Nusantara 29/03/12
Ótimo, estou feliz que seja útil. Por "resumir", quero apenas criar uma lista separada por vírgula de títulos correspondentes. O VBA é necessário para esse fim. Com as funções internas do Excel, é bastante simples criar uma fórmula de matriz que possa selecionar as tags correspondentes. No entanto, não é possível retornar esses resultados em uma célula sem o VBA, porque a CONCATENATEfunção no Excel não pode aceitar uma matriz como argumento (ele somente lê o primeiro item da matriz se você tentar). A função VBA é criada para criar listas separadas por vírgula a partir de uma matriz de valores.
Excellll
Depois de escrever a resposta acima, percebi que há uma maneira de fazer algo semelhante sem o VBA. Em vez de retornar a lista de títulos correspondentes em uma célula, uma coluna de títulos correspondentes pode ser retornada. Posso editar minha postagem para incluir esse método também, se você estiver interessado.
Excellll
É possível sem o VBA? Seria melhor, eu acho. Se não for muito inconveniente, sim, seria incrível se você pudesse incluir o método mencionado. Seria muito útil para quem procura este tópico! Obrigado por explicar a "sumarização". Também tentei concatenação, mas, sim, não podia usá-la da maneira que eu queria. Agora eu sei que não pode se comportar como uma discussão.
Nusantara 31/03/12
Sim é possivel. Vou tentar postar a solução aqui em alguns minutos. Desculpe o atraso!
Excellll
2

Embora fazer isso programaticamente funcione bem em alguns casos, descobri que uma abordagem manual funcionou para mim. Usando colunas para tags, você pode marcar facilmente um item de linha inserindo um 0 na coluna. Você tem uma linha e insere 1s em cada uma das colunas de tags dessa linha (é possível colorir essa linha). Então, quando você classifica por uma das tags, a linha 1s (azul) atua como um separador. Entre os resultados filtrados (0s) e tudo o mais (_).

Isso tem algumas vantagens. 1. Você não precisa digitar sua tag sempre. 2. Você pode facilmente fazer referência cruzada para verificar se possui itens duplicados ou similares que podem ser reduzidos a um.

James Stephen Brown
fonte
1

Outra ideia:

Use a funcionalidade de filtro embutido. Filtre pela coluna Tags e, em seguida, você pode procurar linhas que contenham uma determinada tag.

Uma linha com a lista de tags: comédia, horror, romance

apareceria ao procurar qualquer uma dessas três tags.

mate
fonte
1

Minha abordagem não-VBA é listar as tags em uma coluna (digamos, coluna H), separando itens com vírgulas. A partir daí, uso uma combinação de "Texto para colunas" e "Remover duplicatas" para obter minha lista de tags. Copio isso para a linha de cabeçalho da minha planilha principal (nesse caso, começando na coluna L.) Em cada célula abaixo dos cabeçalhos de tags individuais, insira o seguinte:

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

Isso oferece o melhor dos dois mundos - a coluna de tags (H) é fácil para as pessoas lerem; as colunas de tags individuais (com seus 0s e 1s) são fáceis de ler para o computador. É dinâmico se você permanecer dentro do conjunto de tags especificado. Caso contrário, você precisará adicionar sua nova tag à linha do cabeçalho e copiar suas fórmulas.

A partir daí, as tabelas dinâmicas são suas amigas.

user2024015
fonte
0

Não está claro para mim exatamente como você deseja usar as tags. Mas no Planilhas Google, você pode usar a função SPLIT () para dividir uma sequência de tags (delimitada por espaços, vírgulas ou o que quiser) em várias outras células, e tenho certeza que até o Excel tem uma função que pode pesquisar um célula para uma tag.

Michael Scheper
fonte