スプレッドシートのアイテムにラベルを付ける/タグを付ける方法


14

私はスプレッドシートの初心者なので、非常に明白な質問をしているのなら、あなたが私を許してくれることを願っています。

Excel / Googleスプレッドシートでタグを使用できますか?スプレッドシートを作成して、読んでいるすべての記事と本を記録しています。「私、クラウディウス」を読んでいるとしましょう。歴史、フィクション、伝記、障害、政治、ドラマなどのタグを付けたいと思います。次に、「politics」でタグ付けされたすべての記事/書籍を表示したい場合、そのタグで検索/表示/ピボットすることができます。

たぶん、タグはすべて1つのセルに入れ、各単語をコンマで区切ってください。各単語が独自のセル内にある場合、テーブルが非常に乱雑になると思います。

他のラベリングソリューションにもオープンです。

ありがとう!


私はExcelでタグソリューションを見たことがありませんが、それはないということではありません。たぶん、evernoteを
Raystafarian

回答:


13

私の知る限り、Excelでコンマ区切りのタグを解析および要約できる組み込み機能はありません。もちろん、ワークシート関数と小さなVBAを使用して独自のソリューションを作成できます。これを行うための簡単なソリューションを次に示します。

ステップ1Alt+ F11を押して、ExcelでVBAエディターペインを開きます。新しいモジュールを挿入して、カスタム関数のこのコードに貼り付けます。

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

この関数を使用すると、コンマ区切りリストを作成して、所有するタグデータを要約できます。

ステップ2:ワークシートで、検索するタグ(以下の例ではH2)にセルを入力します。右側のセルで、Ctrl+ Shift+を押して次の数式を入力しますEnter

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

Ctrl+ Shift+を押すEnterと、数式を配列数式として入力します。{...}数式バーに囲まれて表示されます。式に$B$2:$B$6は、にリストされているアイテムのすべてのタグを保持する範囲があることに注意してください$A$2:$A$6

ここに画像の説明を入力してください

編集:
一致が1つのセルのリストではなく列にリストされることを気にしない場合、ワークシート関数のみを使用してタグの一致を返すことができます。

あなたのタイトルがである場合Column A、タグはでありColumn B、そしてあなたが探しているタグはであるH2あなたは、以下を使用することができ、配列数式をI2し、必要な限りフィルダウン:

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

ここに画像の説明を入力してください

数式は、最初に各行のタグに検索語が含まれているかどうかに基づいて数値の配列を形成することにより機能します。一致が見つかった場合、行番号は配列に保存されます。見つからない場合、2000000が配列に格納されます。次に、SMALL(<array>,ROW()-1)式の一部はROW()-1配列からth番目に小さい値を返します。次に、この値はインデックス引数としてINDEX()関数に渡され、タイトルの配列内のそのインデックスの値が返されます。タイトル配列の行数よりも大きい数がINDEX()引数として渡されると、エラーが返されます。一致が見つからない場合は2000000が引数として渡されるため、エラーが返されます。IFERROR()関数は返します""。この場合には。

ROW()この式でどのように使用されているかを把握することが重要です。別の行から始まる結果のリストを表示するSMALL()場合は、配列の最初の最小値を返すように関数の2番目の引数を調整する必要があります。たとえば、結果のリストが行2ではなく行1で始まる場合、のSMALL(...,ROW())代わりに使用しますSMALL(...,ROW()-1)

また、タイトルとタグのリストが行1で始まっていない場合は、式も調整する必要があります。第2引数IF()の関数は、行2の代わりに、行1内のタイトルが始まるのリストは、あなたが含まれるように式を必要とする場合は、あなたのデータの最初の行の試合は、1例:を返すように調整しなければならないIF(...,ROW($A$2:$A$7)-1,...)代わりにIF(...,ROW($A$1:$A$6),...)


うわー、これは完璧に動作します!ただし、Google Spreadsheetの方が好きです。ただし、JavaScriptを使用します。私は言語の完全で完全な初心者ですが、そこに似たようなことをしようとします。さらに2つの質問:データを「要約する」とはどういう意味ですか?ステップ1のコードは何をしますか?GoogleスプレッドシートのJavaScriptでも同じことをする必要があると思うので、特にこの質問をしています。あなたのソリューションに感謝します!
-nusantara

素晴らしい、私はそれが役に立つことをうれしく思います。「要約」とは、一致するタイトルのコンマ区切りリストを作成することを意味します。この目的にはVBAが必要です。組み込みのExcel関数を使用すると、一致するタグを選択できる配列数式を作成するのは非常に簡単です。ただし、CONCATENATEExcel の関数は引数として配列を取ることができないため、これらの結果をVBAなしの1つのセルに返すことはできません(試してみると、配列から最初の項目のみを読み取ります)。VBA関数は、値の配列からコンマ区切りリストを作成するために作成されます。
Excellll

上記の応答を書いた後、私はVBAなしで同様のことを行う方法があることに気付きました。1つのセルで一致するタイトルのリストを返す代わりに、一致するタイトルの列を返すことができます。興味があれば、このメソッドを含めるように投稿を編集することもできます。
Excellll

VBAなしでも可能ですか?それは良いと思います。それがあまりにも不便でなければ、はい、あなたが言及した方法を含めることができれば素晴らしいでしょう。このトピックを探している人にとってはとても助かります!「要約」を説明してくれてありがとう。私も連結を試みましたが、ええ、私が望んでいた方法でそれを使用できませんでした。今、私はそれが議論のように振る舞えないことを知っています。
-nusantara

はい、可能です。ここで数分後に解決策を投稿しようとします。遅れて申し訳ありません!
Excellll

2

プログラムでこれを行うと、場合によっては手動でのアプローチがうまくいくことがわかりました。タグに列を使用すると、列に0を入力して簡単に行項目にタグを付けることができます。次に、1つの行があり、その行の各タグ列に1を入力します(この行に色を付けることができます)。次に、タグの1つでソートすると、1s(青)行がセパレーターとして機能します。フィルター結果(0)とその他すべて(_)の間。

これにはいくつかの利点があります。1.毎回タグを入力する必要はありません。2.簡単に相互参照して、重複するアイテムまたは類似のアイテムを1つに減らすことができるかどうかを確認できます。


1

別のアイデア:

組み込みのフィルター機能を使用します。[タグ]列でフィルタリングすると、特定のタグを含む行を検索できます。

タグリストのある行:コメディ、ホラー、ロマンス

これら3つのタグのいずれかを検索すると表示されます。


1

私の非VBAアプローチは、タグを1つの列(列Hとしましょう)にリストし、アイテムをコンマで区切ります。そこから、「Text to Columns」と「Remove Duplicates」の組み合わせを使用して、タグのリストを取得します。これをメインシートのヘッダー行にコピーします(この場合、列Lから始まります。その後、個々のタグヘッダーの下の各セルに次のように入力します。

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

これにより、両方の長所が得られます。タグ列(H)は読みやすいです。個々のタグ列(0と1を含む)はコンピューターが読みやすいです。指定されたタグのセット内に留まる場合、動的です。そうでない場合は、ヘッダー行に新しいタグを追加してから、式をコピーする必要があります。

そこから、ピボットテーブルはあなたの友達です。


0

タグをどのように使用したいかは明確ではありません。ただし、Googleスプレッドシートでは、SPLIT()関数を使用して、タグの文字列(スペース、コンマ、または必要なもので区切られている)を他の複数のセルに分割できます。Excelでも、タグのセル。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.