• ベストアンサー

エクセルの任意の行と列の並び替えについて

エクセルの任意の行と列の並び替えをしなければならなくなりました。具体的には下記のように変更しなければなりません。となたかご教示ください。  変更前            変更後 店名 産地 品名 チェック欄  産地  品名    A店 B店 C店 A店 北海道たまねぎ ○    北海道 たまねぎ  ○    ○ A店 長野 にんじん ○      長野  にんじん ○  ○ B店 長野 にんじん ○ →   神奈川 肉         ○ B店 神奈川 肉    ○    千葉  魚            ○ C店 千葉  魚    ○ C店 北海道   たまねぎ    ○

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

チェック欄に丸のあるレコードだけに丸が付くのかなあ ピボットテーブルでいかがでしょう レイアウトは添付図参照 総計などの集計は非表示にする データエリアを選択してセルの書式設定 ユーザー定義 [>0]"○";;;

peko2_1956
質問者

お礼

ご回答有難うございました。 お陰さまで思ったとおりのレイアウト変更をすることができました。 なお「この回答への補足」は自己解決することができました。 今後ともよろしくお願いいたします。

peko2_1956
質問者

補足

ご回答いただいた皆様へ ご回答いただいた皆様、ご回答有難うございました。段数4000を超えるデータだったのでとても助かりました。 ピポットテーブルで試したところ思い描いていた表に近い表を作表することができました。 ところでご回答では「神奈川」・「肉」・「B店」、段が変わって「千葉」・「魚」・「C店」と作表できていますが、私がやると「神奈川」・「肉」・「B店」までは同様に表示されるものの、その下の段に「神奈川合計」の段が自動的に表示されてしまいます。同様に千葉の段も下に合計段が表示されてしまいます。ピポットテーブルのドラックの順番かと思い色々やり直してみましたがうまくゆきません。どのようにやると「合計」の段を表示させずに作表することができるのでしょうか? 恐れ入りますがご回答よろしくお願いいたします。

すると、全ての回答が全文表示されます。

その他の回答 (5)

回答No.6

A列 1 A店北海道たまねぎ○ 2 A店長野にんじん○ 3 B店長野にんじん○ 4 B店神奈川肉○ 5 C店千葉魚○ 6 C店北海道たまねぎ○    ↑  =文字のつなぎ A1~A6のセル=CONCATENATE(店名,産地,品名,チェック欄) B列 C列 産地 品名 北海道 たまねぎ 長野 にんじん 神奈川 肉 千葉 魚 D E F A店 B店 C店 ○ ○ ○ ○ ○ ○ D2のセルに =IF(COUNTIF($A$1:$A$6,CONCATENATE(D$1,$B2,$C2,"○"))>0,"○","") D2のセルをコピーでD2からF5に貼り付ける。

すると、全ての回答が全文表示されます。
回答No.5

A B C D E F 1 A店北海道たまねぎ○ 産地 品名 A店 B店 C店 2 A店長野にんじん○ 北海道 たまねぎ ○ ○ 3 B店長野にんじん○ 長野 にんじん ○ ○ 4 B店神奈川肉○ 神奈川 肉 ○ 5 C店千葉魚○ 千葉 魚 ○ 6 C店北海道たまねぎ○    ↑  =文字のつなぎ A1~A6のセル=CONCATENATE(店名,産地,品名,チェック欄) D2のセルに =IF(COUNTIF($A$1:$A$6,CONCATENATE(D$1,$B2,$C2,"○"))>0,"○","") D2のセルをコピーでD2からF5に貼り付ける。

すると、全ての回答が全文表示されます。
回答No.4

#2です ピボットテーブル案にちょっと追加 更新の方法を改善する 店名の数とレコードの数が等しいとしてSheet1を選択して [Ctrl]+[F3]名前の定義 名前 データ 参照範囲 =$A$1:INDEX($D:$D,COUNTA($A:$A)) ピボットテーブルの範囲 : データ とします。 レコード数が増えた場合はピボットテーブルの[データの更新]ボタンを押すだけですみます。

すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

店名が増えても産地や品名が増えても対応できる方法として、また処理速度も比較的早い方法として、作業列を作って対応する方法を提案します。 E2セルには次の式を入力します。 =IF(COUNTIF(A$2:A2,A2)=1,MAX(E$1:E1)+1,"") F2セルには次の式を入力します。 =B2&C2 G2セルには次の式を入力します。 =IF(F2="","",IF(COUNTIF(F$2:F2,F2)=1,MAX(G$1:G1)+1,"")) H2セルには次の式を入力します。 =A2&F2 E2セルからH2セルを選択して下方にオートフィルドラッグします。 新しい表をSheet2に作ることにしてそこでは次のようにします。 A1セルには産地、B1セルには品名と入力します。 C1セルには次の式を入力し右横方向にオートフィルドラッグします。 =IF(COUNTIF(Sheet1!$E:$E,COLUMN(A1))=0,"",INDIRECT("Sheet1!A"&MATCH(COLUMN(A1),Sheet1!$E:$E,0))) これで店名が表示されます。 A2セルには次の式を入力し、B2セルまでオートフィルドラッグしたのち、A2セルとB2セルを選択して下方にもオートフィルドラッグします。 =IF(COUNTIF(Sheet1!$G:$G,ROW(A1))=0,"",INDEX(Sheet1!$B:$C,MATCH(ROW(A1),Sheet1!$G:$G,0),COLUMN(A1))) C2セルには次の式を入力し横方向にオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF($A2="","",IF(COUNTIF(Sheet1!$H:$H,C$1&$A2&$B2)=0,"",INDEX(Sheet1!$D:$D,MATCH(C$1&$A2&$B2,Sheet1!$H:$H,0)))) Sheet1での作業列は目障りでしたら非表示にしてください。

すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 同じ質問が続いているようなので 一番最後に回答させていただきます。 質問をみると「産地」と「品名」は必ず一致しているわけですね? そういう事だと判断して回答させていただきます。 色々方法はあると思いますが、作業列を使用した一例です。 ↓の画像のようにまず作業列F2セルに =IF(COUNTIF($B$2:B2,B2)=1,ROW(A1),"") 作業列2のG2セルに =A2&B2 として、F2・G2を範囲指定し、オートフィルで下へコピーします。 この2列のデータを元に 画像の下側のような表示をさせるようにします。 A11セルに =IF(COUNT($F$2:$F$7)>=ROW(A1),INDEX($B$2:$B$7,SMALL($F$2:$F$7,ROW(A1))),"") B11セルに =IF(A11="","",INDEX($C$2:$C$7,MATCH(A11,$B$2:$B$7,0))) C11セルに =IF(COUNTIF($G$2:$G$7,C$10&$A11)>0,"○","") とし、C11セルをオートフィルで列方向にコピーします。 そして、最後にA11~E11セルを範囲指定し、 オートフィルで下へコピーすると画像のような感じになります。 もし作業列が目障りであれば、F・G列すべてを範囲指定し、非表示にしても構いません。 尚、元データは7行目までしか入っていないので データの量によっては範囲指定をアレンジして広げてくださいね。 以上、参考になれば幸いですが、 他に良い方法があれば軽く読み流してください。m(__)m

すると、全ての回答が全文表示されます。

関連するQ&A