• ベストアンサー

エクセル 表の並べ替え

エクセル2002使用です。 表を縦横の並べ替えで困っています。 表-1   9月30日 10月31日 A  1     5   B  2     6 C  3     7 D  4     8 表-2        A B C D  9月30日 1 2 3 4 10月30日 5 6 7 8 としたいのですが、データーは毎月増えていきます。 項目ABCDは期間の途中でかわることがあります。(増減) ですので、貼り付けメニューの行列を入れ替えるは使わない。 表ー1のデータセルから表2のセルに移したい。 つまり、表ー1のデータ1は必ず表-2の9月30日とAを確認して表ー2に移動したいのです。 VlookとHlookを組み合わせるような気がするのですがよくわからないです。 方法は、関数でもVBAでも良いです。 何卒よろしくお願いします。

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

  • ベストアンサー
  • banker_U
  • ベストアンサー率21% (17/78)
回答No.5

#1です。 補足要求に答えていただきながら返答忘れてましたすいません。 えーとそこそこのレベルの方と判断しますので、細かい説明はしません。それと完全ではないです(ヒントのレベル)。 項目があらかじめ決まっているのなら、項目をA列に縦ならびに書いた別シートを作っておいて((表2)の1行目の項目リストを縦にコピー)、隣の列あたりに =Vlookup(A?,表-1!データ入力範囲,移したい列,false) を入力。出てきた値を、表-2に行列を入れ替えてコピー。 って言うのではどうですか? お察しのとおり、これだと、項目漏れが検出できません。 対策は2つの表の項目数をcountAとかで確認するようにしたらどうですか?

ken123
質問者

お礼

banker_U 様 たびたびありがとうございます。 項目漏れを検知できないのはちょっとつらいんです。。。 countAも表が実は複数あって使えないんです。(いろいろなパターンがあるので) Vlookをつなぎ合わせてがんばってみます。 ありがとうございました。

その他の回答 (4)

  • fukkyse
  • ベストアンサー率32% (130/402)
回答No.4

#3です。ごめんなさい。とんでもなく勘違いした答えでした。 =OFFSET($A$1,COLUMN(A1)-1,ROW(A1)-1,1,1) これだけで十分でした。

  • fukkyse
  • ベストアンサー率32% (130/402)
回答No.3

試してみた場所が良くなかったのですが、その辺は調整してみてください。 表1のデータがA1からC5に入力されていたとして。 任意のセルに「=COUNTA(A:A)」(A1セルが空白として)仮にこれをD1に作る。 E1に、=OFFSET($A$1,COLUMN(A1)-1,INT(ROW()-1/$D$1),1,1)として、必要数をコピー。この場合、E1からI3まで。 主旨が違っていたらごめんなさい。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

以下の方法は如何でしょうか。 表-2はA7:A8に日付、B6:B9に項目設定されているとし、B7に次の関数を設定してコピーして下さい。 =IF(SUMPRODUCT(($B$1:$C$1=$A8)*($A$2:$A$5=B$7)),OFFSET($A$1,MATCH(B$7,$A$2:$A$5),MATCH($A8,$B$1:$C$1)),"")

  • banker_U
  • ベストアンサー率21% (17/78)
回答No.1

こんにちは ひとつ質問があります。 項目ABCDは増減するとのことですが、項目名として取り得る内容内容はあらかじめ決まっていますか? 言い換えると、あらかじめ決まった項目ABCD…のうち、毎月何項目かが出てくるということですか? そうじゃないとすると、表2のタイトル行(ABCD)は、前月までに無い項目名が入ってきたときに、どうしますか(右に列を追加とかですか?)

ken123
質問者

補足

banker_U 様 早速のご回答ありがとうございます。 項目ABCD内容の変更はあらかじめ決まっています。 項目の変更は頻繁にはないので、表-2の項目列の追加はプログラムを組めればいいですが、手作業でも可能な範囲です。 (手作業の場合は、エラートラップでミスを防ぐレベルで十分です。追加項目Eが出て、表-2に追加されていない場合、エラートラップで表示) よろしくお願いします。