• ベストアンサー

Excelで並べ替え

Excelのデータを並べ替えたいのですが 「形式を選択して貼り付け」の「行列を入れ替える」ではできません。 1行目は項目名があります。 A2からA12のセルに「あ」、A13からA23のセルに「い」と入力されています。 B2からB12のセルにはそれぞれ異なるデータが、B13からB23のセルにもそれぞれ異なるデータが入力されています。 これを A2に「あ」を表示させて、B2からB12のセルに入力されているデータを 「あ」の右へ横並びに A3には「い」とB13からB23が「い」の右へ横並びに 表示させたいのですが、方法がわかりません。 どのようにしたらできるでしょうか? どうぞよろしくお願いします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

あ、い、う、えの4つ、項目数字3つの例です。 データはSheet2にたまたま入れています。 A2:A13にあいうえを3回貼り付けます。 B2に =INDEX(Sheet2!$B$2:$D$100,MOD((ROW()-2),4)*11+COLUMN()-1,INT((COLUMN()-2)/11)+INT(ROW()-2)/4+1) と入れて B3:B13に式を複写します。 B2:B13をC2:L13まで式を複写します。 結果 あ a11 a12 a13 a14 a15 a16 a17 a18 a19 a20 a21 い i11 i12 i13 i14 i15 i16 i17 i18 i19 i20 i21 う u11 u12 u13 u14 u15 u16 u17 u18 u19 u20 u21 え e11 e12 e13 e14 e15 e16 e17 e18 e19 e20 e21 あ a21 a22 a23 a24 a25 a26 a27 a28 a29 a30 a31 い i21 i22 i23 i24 i25 i26 i27 i28 i29 i30 i31 う u21 u22 u23 u24 u25 u26 u27 u28 u29 u30 u31 え e21 e22 e23 e24 e25 e26 e27 e28 e29 e30 e31 あ a31 a32 a33 a34 a35 a36 a37 a38 a39 a40 a41 い i31 i32 i33 i34 i35 i36 i37 i38 i39 i40 i41 う u31 u32 u33 u34 u35 u36 u37 u38 u39 u40 u41 え e31 e32 e33 e34 e35 e36 e37 e38 e39 e40 e41 元データ(1部省略)Sheet2のA1:D45 項目1 項目2 項目3 項目4 あ a11 a21 a31 あ a12 a22 a32 あ a13 a23 a33 あ a14 a24 a34 あ a15 a25 a35 あ a16 a26 a36 あ a17 a27 a37 あ a18 a28 a38 あ a19 a29 a39 あ a20 a30 a40 あ a21 a31 a41 い i11 i21 i31 い i12 i22 i32 い i13 i23 i33 い i14 i24 i34 い i15 i25 i35 い i16 i26 i36 い i17 i27 i37 い i18 i28 i38 い i19 i29 i39 い i20 i30 i40 い i21 i31 i41 これで質問に合っていると良いが。 しかしVBA向きの問題と思う。

lehua
質問者

補足

早速のご回答ありがとうございます。 記述不足で申し訳ありません。 実際にはもっと列も行も多いのですが、こんなイメージです。 よろしくお願いします。 VBAでも関数でもかまいません。 元データ 項目1 項目2 あ a1 あ a2 あ a3 あ a4 い b1 い b2 い b3 い b4 い b5 い b6 い b7 表示させたい結果 項目1 項目2 項目3 項目4 項目5 項目6 項目7 項目8 あ a1 a2 a3 a4 い b1 b2 b3 b4 b5 b6 b7

その他の回答 (2)

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

少なくとも現在設定されてるセルに上書きするのでしたら、一度では出来ません。 A2:B23をコピーして行列を入れ替えて横並びにしてから B2:B12だった範囲を選択してB2へ移動 B13:B23だった範囲を選択してB3へ移動すればいいのでは?

lehua
質問者

補足

早速のご回答ありがとうございます。 記述不足で申し訳ありません。 実際にはもっとたくさんデータがあるので コピーや移動での対応は難しいです。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

並べ替えではなく関数で値を求める方法です。 元のデータシート(Sheet1とします)はそのままに、別シートを追加してA1に「あ」、A2に「い」と入力します。B1の式は以下の通りです。 B1を右方向と、下の行にもコピーしてください。 =IF(COLUMN()<COUNTIF(Sheet1!$A:$A,$A1)+2,INDEX(Sheet1!$B$1:$B$23,SUMPRODUCT(LARGE((Sheet1!$A$2:$A$23=$A1)*ROW(Sheet1!$A$2:$A$23),COUNTIF(Sheet1!$A:$A,$A1)-COLUMN()+2))),"") もし「あ」「い」の値が不特定多数で追加したシートに入力するのが大変なら、A列にオートフィルタを設定して、その後「データ」→「オートフィルタ」→「フィルタオプション」→「重複は無視する」にすると重複なしの値を得ることができます。

lehua
質問者

補足

早速のご回答ありがとうございます。 やってみます! マクロに登録もできるでしょうか?