重複の数を数え、選択したセルの値を返してから重複を削除する数式を作成するにはどうすればよいですか?

重複の数を数え、選択したセルの値を返してから重複を削除する数式を作成するにはどうすればよいですか?

並べ替えた後のリストは次のようになります。

大まかなリスト

各エントリがリストされている回数を返し、重複をすべて削除する数式が必要です。通常、私は単に目で数を数えるか、同じエントリをハイライトして、計算された「カウント」をスプレッドシートの下部に記録します。その後、戻って重複をすべて削除しますが、これは少し面倒な作業であり、これを行うより簡単な方法があるのではないかと思わずにはいられません。

フィルター機能を使用して、隣の列に数字がないエントリを返すようにしましたが、重複を削除しようとすると、エントリが上にシフトされ、すでに手動で入力した数字が一致しなくなります。実を言うと、Excel で各エントリの出現回数をカウントして記録する方法があるような気がします (最初に並べ替える必要さえありません)。しかし、私は論理式が苦手で、ワールド ワイド ウェブで検索しても関連するクエリは見つかりましたが、その方法を理解するのにはあまり役立ちません。

現在、Microsoft 365 バージョンの Excel を使用しています。

最終的に、リストは次のようになることを望みます。

終了リスト

しかし、労力は少なくて済みます。

さらに詳しい情報を知りたい方は、全体像をお読みください。健康のために食べることに関心のある私は、微量栄養素まで摂取量を追跡し、適切な量を摂取し、推奨量を超えないようにしています。週に一度、このデータを確認して、摂取量が足りない栄養素を特定します。さまざまな栄養素が最も豊富な食品をリストアップしたマスタースプレッドシートのようなものを持っています。次のようになります。

栄養素とそれを最も多く含む食品のリスト

ご覧のとおり、特定の食品は複数のリストに載っています。私は 1 日に食べられる量に限りがあるため、複数のリストに載っていることでコストパフォーマンスの高い食品に集中したいと考えています。通常、私は欠乏症が特定された列を 1 つの列にコピーして貼り付け、アルファベット順に並べ替えてカウントします。この詳細を追加したのは、Excel の真のスーパーユーザーであれば、私が行っているような面倒なコピー アンド ペーストをすることなく、この栄養素別の食品のマスター スプレッドシートから数字を引き出せるのではないかと思ったからです。

Excel をもう少し効率的に使用するために協力していただける方がいらっしゃいましたら、よろしくお願いいたします。

答え1

私の提案は最初の部分(製品の並べ替えリスト)のみに関するものです。
食べ物
リストを Excel テーブル ( ) に配置し、Table1このリストを として参照することができますTable1[List]
列 と にはCD個数を含むユニケートのリストが表示されます。 の
数式C2:の=UNIQUE(Table1[List])
数式D2:次の手順として、列と=COUNTIF(Table1[List],C2#)
に示すように、これら 2 つの列を並べ替えることができます。 の数式:FG
F2=SORT(HSTACK(C2#,D2#),2,-1)

答え2

以下のデータがあり、MS365それを使用している場合は、次の方法を実行できます。

ファイバ カルシウム マグネシウム 亜鉛 マンガン ヨウ素 セレン フッ化物
ネイビービーンズ 牛乳 強化シリアル かぼちゃの種 牛肉 カニ 小麦胚芽 ベークドポテト ブラジルナッツ 紅茶
レンズ豆 ヨーグルト 小麦ふすまフレーク アーモンド かぼちゃの種 ロブスター サツマイモ 牛乳 ヒマワリの種 エビ
ピント豆 パルメザン グリッツ ほうれん草 ヒマワリの種 椎茸 コラードグリーン エビ マグロ レーズン
ヒヨコマメ スイス グラノーラ 黒豆 レンズ豆 白いボタン 七面鳥 ラズベリー
リママメ カッテージチーズ シュレッドウィート 七面鳥 ポルタベラ 松の実 ネイビービーンズ ロブスター 調理したオートミール
アボカド ほうれん草 ライスクリーム ヨーグルト クレミニス ヘーゼルナッツ エビ ビール
かぼちゃの種 コラードグリーン 牛肉 牛乳 椎茸 サツマイモ ピーカン 豚ヒレ肉 赤ワイン
ゴマ カブの葉 牛ひき肉 アボカド カブの葉 オーツ麦 牛肉 ハードサイダー
アーモンド ブロッコリー ビーフテンダーロイン バナナ ベークドポテト リママメ 子羊 グリッツ
ピスタチオ ブラック·アイド·ピーズ バッファローサーロイン ほうれん草 ヒヨコマメ チキン 黒豆のスープ
ピーカン ネイビービーンズ 地上のバイソン ヒマワリの種 ネイビービーンズ 七面鳥 ベークドポテト
ヒマワリの種 ポーターハウス かぼちゃの種 レンズ豆 ネイビービーンズ 人参
どんぐりかぼちゃ どんぐりかぼちゃ ビーフシチュー肉 ブラジルナッツ ほうれん草 ピント豆 ほうれん草
ハバードスカッシュ ロブスター 豚ヒレ肉 クルミ パイナップル リママメ マスクメロン

• -->GROUPBY()にのみ適用可能な関数を使用します。MS365Office Insiders

=LET(
     _Data, A3:J16,
     _SingleCol, TOCOL(_Data,1),
     GROUPBY(_SingleCol,_SingleCol,ROWS,,0,-2))

または、BYROW()またはを使用してMMULT()

=LET(
     _Data, A3:J16,
     _SingleCol, TOCOL(_Data,1),
     _Uniq, UNIQUE(_SingleCol),
     _Counts, MMULT(N(_Uniq=TOROW(_SingleCol)),SEQUENCE(ROWS(_SingleCol))^0),
     HSTACK(_Uniq,_Counts))

=LET(
     _Data, A3:J16,
     _SingleCol, TOCOL(_Data,1),
     _Uniq, UNIQUE(_SingleCol),
     _Counts, BYROW(_Uniq,LAMBDA(x,SUM(--(x=_SingleCol)))),
     HSTACK(_Uniq,_Counts))

  • 上記のすべての式は、各一意のレコードのカウント数を示します。
  • 関数を使用して、TOCOL()重複を除いた複数の範囲のデータを単一の列配列に変換します。
  • 方法1--> 最初の方法では、指定されたフィールドに従って、 に設計された関数を使用します。ただしGROUPBY()、その関数は であるため、オプションを有効にしない限り、機能せず、エラーとして表示されます。groupaggregatesortOffice-Insiders#NAME!
  • 方法2--> またLET()、関数から始まるため、読みやすくなり、冗長な範囲/数式の使用が減ります。
  • 最初の方法と同様に、最初にTOCOL()関数を適用し、次にUNIQUE()関数を使用して一意の値を返し、最後にMMULT()関数を使用して、指定された 2 つの配列の行列積であるカウントを返します。
  • 最後に、 を使用して、およびHSTACK()関数を使用して返された両方の配列を結合し、目的の出力を返します。UNIQUE()MMULT()
  • 方法3BYROW()-->各項目の一致するカウントを取得する関数を使用することを除いて、上記と同じ手順で開始します。

ただし、これらの方法が複雑すぎると思われる場合は、以下に示す最も単純な方法も使用できます。

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


  • まず、TOCOL()&UNIQUE()関数を使用して、空と重複を除いた複数の範囲を1つの配列に返します。そして、セルに配置します。L2

=UNIQUE(TOCOL(A3:J16,1))

  • 最後に、次の関数を入力してカウントを取得します。データ範囲は、A3:A16スーツに応じて変更する必要があることに注意してください。次の部分は、あふれてしまうため、下まで埋める必要はありません。L2上記の式は、およびを使用して返されますTOCOL()UNIQUE()

=COUNTIFS(A3:J16,L2#)

それでも上記に従うことに抵抗がある場合は、以降POWER QUERYで利用可能なExcel 2010+、およびで利用可能なをWindows Excel 2010+使用できます。Excel 365 (Windows or Mac)

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


Power Query を使用するには、次の手順に従います。

  • まずソース範囲をテーブルに変換し、それに応じた名前を付けます。この例では次のように名前を付けました。Table1

  • Data次に、タブ --> Get & Transform Data--> Get Data--> From Other Sources-->から空のクエリを開きます。Blank Query

  • 上記のようにPower Queryウィンドウが開きます。TabからHome--> Advanced Editor-->そして、表示されているものを削除して次の内容を貼り付けM-Code、を押します。Done

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Unpivoted Columns" = Table.UnpivotOtherColumns(Source, {}, "Attribute", "Value"),
    #"Removed Columns" = Table.RemoveColumns(#"Unpivoted Columns",{"Attribute"}),
    #"Grouped Rows" = Table.Group(#"Removed Columns", {"Value"}, {{"Count", each Table.RowCount(_), Int64.Type}})
in
    #"Grouped Rows"

  • 最後に、それを再度インポートするには、Excel-->Close & LoadまたはをクリックしますClose & Load To--> 最初にクリックすると、New Sheet必要な出力を含む が作成され、後者をクリックすると、結果を配置する場所を尋ねるウィンドウが表示されます。

注: 数式は重複を削除することはできませんが、特定の条件に従ってセルに配置されたときに値を抽出します。上記に示したように。基本的に、目的の出力を得るにはUNIQUE()、、TOCOL()&COUNTIF()またはCOUNTIFS()関数が必要です。


Rough Listこの数式を任意の空白セルに入力するだけです。Listの名前は次のようになりますTable

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


=LET(
     _Uniq, UNIQUE(List),
     _Output, SORT(HSTACK(_Uniq, COUNTIF(List,_Uniq)),2,-1),
     VSTACK({"Nutrients","Counts"},_Output))

該当する場合は関数を使用すると簡単になりますGROUPBY():

=GROUPBY(List,List,ROWS,,0,-2)

関連情報