Excel-1つのセルのピボット値(カンマ区切り値として)


11

Excel-1つのセルのピボット値(カンマ区切り値として)

2列のデータがあります。

サプライヤー1 |製品1
サプライヤー1 |製品2
サプライヤー1 |製品4
サプライヤー1 |製品7
サプライヤー2 |製品3
サプライヤー2 |製品5

サプライヤを「ピボット」し、製品のリストを単一のセルにカンマ区切りで入力します。例:

サプライヤー1 |製品1、製品2、製品4、製品7
サプライヤー2 |製品3、製品5

約1000のサプライヤーがあり、0 <製品<= 10。

私の現在の回避策は、ピボットテーブルの使用、CSVとしての保存などを含み、非常に厄介です。非VBAソリューションはすばらしいでしょう。


これを簡単に行うには、SQLクエリが必要です。いくつかの説明のデータベースにエクスポートできますか?
Rhys Gibson、

回答:


23

いくつかの数式のみを使用する非VBA、非ピボットテーブルソリューションを次に示します。

  1. 最初に、「Text-to-columns」を使用して、データをその「パイプ」区切り文字(垂直線)で2つの列に分割しました。「サプライヤー」列と「製品」列。それらはそれぞれA列とB列に表示されます。(それらは1つの列に結合されているようにあなたの投稿に表示されるので、最初にそれらを分割します。これを行う必要はありません。)

  2. 「連結」列と名付けたC列で、セルC2から始めて下にコピーするこの式を使用しました:= IF(A2 = A1、C1& "、"&B2、A2& "|"&B2)

  3. 列Dで、「SupplierChangesAtNextLine?」と名付けました。私はこの式を使用しました(D2から始まり、下にコピーします):= IF(A2 = A3、 ""、 "Changed")

  4. これで、列Dで「変更された」値のみをフィルタリングできるようになります。

いい狩り!


1
C1  C2  C3          C4
a   1   1   
a   2   2,1 
a   3   3,2,1   
a   5   5,3,2,1 
a   3   3,5,3,2,1   New
b   11  11  
b   13  13,11   
b   11  11,13,11    
b   14  14,11,13,11 New
c   22  22  
c   24  24,22       New
f   25  25  
f   11  11,25   
f   10  10,11,25    New
  1. col3(C3を意味する)では、数式= IF(A2 = A1、B2& "、"&C1、B2)を使用してセルC2を開始し、下にドラッグします。
  2. C4(列4を意味する)では、数式= IF(A2 = A3、 ""、 "changed")を使用してセルD2以降を開始し、下にドラッグします。
  3. C4の新規(col4を意味する)でフィルタリングすると、希望する結果が得られます。

0

列Cをカウンターとして追加*:= COUNTIF(A $ 2:A $ 528、A2)
Dを増分として追加* = IF(A2 = A1、D1 + 1、1)
Eを追加して連結*:= IF(A1 = A2、E1 & " "&B2、B2)
のみ、最後の連結を維持するためにFを追加:= IF(AND(C2 = D2、E4 <>" ")、E4、"")
セル2アドオンとプルダウン(またはダブルクリック右隅)列のすべてのセルに数式を適用します

別のシートに値としてコピーして貼り付け、Fで降順に並べ替え、残りを削除する


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