プロが教える店舗&オフィスのセキュリティ対策術

エクセル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でも良いです。

何卒よろしくお願いします。

A 回答 (5件)

こんにちは



ひとつ質問があります。
項目ABCDは増減するとのことですが、項目名として取り得る内容内容はあらかじめ決まっていますか?
言い換えると、あらかじめ決まった項目ABCD…のうち、毎月何項目かが出てくるということですか?

そうじゃないとすると、表2のタイトル行(ABCD)は、前月までに無い項目名が入ってきたときに、どうしますか(右に列を追加とかですか?)

この回答への補足

banker_U 様 早速のご回答ありがとうございます。

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

よろしくお願いします。

補足日時:2005/10/13 11:33
    • good
    • 0

以下の方法は如何でしょうか。



表-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)),"")
    • good
    • 0

試してみた場所が良くなかったのですが、その辺は調整してみてください。



表1のデータがA1からC5に入力されていたとして。

任意のセルに「=COUNTA(A:A)」(A1セルが空白として)仮にこれをD1に作る。

E1に、=OFFSET($A$1,COLUMN(A1)-1,INT(ROW()-1/$D$1),1,1)として、必要数をコピー。この場合、E1からI3まで。

主旨が違っていたらごめんなさい。
    • good
    • 0

#3です。

ごめんなさい。とんでもなく勘違いした答えでした。

=OFFSET($A$1,COLUMN(A1)-1,ROW(A1)-1,1,1)

これだけで十分でした。
    • good
    • 0

#1です。


補足要求に答えていただきながら返答忘れてましたすいません。

えーとそこそこのレベルの方と判断しますので、細かい説明はしません。それと完全ではないです(ヒントのレベル)。

項目があらかじめ決まっているのなら、項目をA列に縦ならびに書いた別シートを作っておいて((表2)の1行目の項目リストを縦にコピー)、隣の列あたりに
=Vlookup(A?,表-1!データ入力範囲,移したい列,false)
を入力。出てきた値を、表-2に行列を入れ替えてコピー。
って言うのではどうですか?

お察しのとおり、これだと、項目漏れが検出できません。
対策は2つの表の項目数をcountAとかで確認するようにしたらどうですか?
    • good
    • 0
この回答へのお礼

banker_U 様 たびたびありがとうございます。

項目漏れを検知できないのはちょっとつらいんです。。。
countAも表が実は複数あって使えないんです。(いろいろなパターンがあるので)

Vlookをつなぎ合わせてがんばってみます。

ありがとうございました。

お礼日時:2005/10/14 20:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!