- ベストアンサー
縦表のデータを横表に転記する方法とは?
- sheet1で縦に集計されたデータを横に転記したい場合、VLOOKUP関数を使用すると便利です。しかし、参照セルを入力し直す必要があり、手間がかかることがあります。
- そこで、より効率的な方法をご紹介します。
- まず、INDEXとMATCH関数を組み合わせて、横表に転記したいデータを指定します。そして、この式をドラッグすることで他のセルにも適用できます。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
回答No2,3です。 最初にお示しの表では一人当たりの行が5行になっていましたね。 6行でしたら式も変わります。 なお、MOD関数は使う必要がなったですね。簡略した式にできます。 次の式をシート2のA1セル仁入力してからF1セルまでドラッグコピーしたのちに下方にもドラッグコピーしてください。 =IF(INDEX(Sheet1!$Z:$Z,(ROW(A1)-1)*6+COLUMN(A1))=0,"",INDEX(Sheet1!$Z:$Z,(ROW(A1)-1)*6+COLUMN(A1)))
その他の回答 (3)
- KURUMITO
- ベストアンサー率42% (1835/4283)
シート1のZ列をシート2に1名につき1行5列で表示したいとのことですね。 シート2のA1セルには次の式を入力しE1セルまでドラッグコピーしたのち下方にもドラッグコピーします。 =IF(INDEX(Sheet1!$Z:$Z,(ROW(A1)-1)*5+MOD(COLUMN(A1)-1,5)+1)=0,"",INDEX(Sheet1!$Z:$Z,(ROW(A1)-1)*5+MOD(COLUMN(A1)-1,5)+1)) INDEX(Sheet1!$Z:$Z,(ROW(A1)-1)*5+MOD(COLUMN(A1)-1,5)+1)の意味ですが、INDEX関数でシート1のZ列のデータを表示しなさいとしています。2番目の引数である(ROW(A1)-1)*5+MOD(COLUMN(A1)-1,5)+1はシート1のZ列の何行目かを求めています。 (ROW(A1)-1)*5はシート2の1行目では0となり、シート2の2行目では5、シート2の3行目では10の数値が得られます。それらの値にMOD関数で求めた値をプラスしたものがシート1でのZ列での行番号となります。 MOD関数ではCOLUMN(A1)-1の値を5で割った時の余りを計算しており、MOD(COLUMN(A1)-1,5)+1はMOD関数の値に1をプラスしたものです。COLUMN(A1)を使うことでシート2のA列から横にドラッグコピーしたときに数値が変わるようにしています。シート2のA列ではMOD(COLUMN(A1)-1,5)+1の値は1、B列では2、C列では3・・のように変化します。 したがってROW(A1)-1)*5+MOD(COLUMN(A1)-1,5)+1の値はシート2のA1セルでは1、B1セルでは2、C1セルでは3、D1セルでは4、E1セルでは5の値となります。また、A2セルでは6、B2セルでは7、・・・・A3セルでは11、B3セルでは12と変化します。 これらの数値はシート1のG列での行番号になりますのでシート2での行が変わるごとに1行目から6行目、11行目、というように変化しておりそれがある社員一人一人に対応しています。またシート2のA列からB列C列と変わることで一人の社員のシート1のG列でのデータが表示されるようになっています。
補足
お世話になっております。詳しくご説明頂き本当にありがとうございます。 しかし難しいですね。。。。 ご提案頂いた数式を解読中です。 実際に使用してみると、下記までたどりつきました。(1社員につき9行使用しています) しかし、sheet2のA1から転記し始めると上手くいくのですが、実際の転記場所が(例えばF4とか、、、)には対応できませんので、おそらく2番目の引数につまずいているようです。 =IF(INDEX(sheet1!$BQ$11:$BT$109,(ROW(A1)-1)*9+MOD(COLUMN(A1)-1,9)+1,4) 各社員の1行目をF4、2行目をF5、・・・のあたりがまだ解読できてないのですよね??いろいろ試してみたのですが上手くいきません。 何かヒントは頂けないでしょうか??? 宜しく御願いいたします。
- KURUMITO
- ベストアンサー率42% (1835/4283)
シート1のZ列をシート2に1名につき1行5列で表示したいとのことですね。 シート2のA1セルには次の式を入力しE1セルまでドラッグコピーしたのち下方にもドラッグコピーします。 =IF(INDEX(Sheet1!$Z:$Z,(ROW(A1)-1)*5+MOD(COLUMN(A1)-1,5)+1)=0,"",INDEX(Sheet1!$Z:$Z,(ROW(A1)-1)*5+MOD(COLUMN(A1)-1,5)+1))
補足
INDEX関数とROW関数は聞いたことがあります。難しそうですが、覚えたら使えそうですね!! MODとCOLUMNですか??初めてです。 大変恐縮ですが、ご提案頂いた数式がどういったものか、簡単に教えて戴くことはできますか? 応用させたら、今回使えるかもしれません! 宜しくお願い致します。
- tsuyoshi2004
- ベストアンサー率25% (665/2600)
エクセルですよね? sheet1の必要な範囲をコピーして、 sheet2へ「形式を選択して貼り付け」で「行列を入れ替える」にチェックを入れてはだめでしょうか?
補足
早速のご回答に感謝致します。 実は、縦表をそのまま横表に入れ替えるだけではありません。説明不足でした。申し訳ありません。 縦表のデータから必要なものを選んで、指定したセルに転記したいのですが、その表がたまたま横表でした。社員一人ずつの表は同じものが続いていますが、縦横に相互性がありません。。。
お礼
ありがとうございます。 どうやら、ROW関数が理解できていなかったようです。どこのセルからスタートしても(A1)を固定していればうまくいきました。 何度もお世話になり、またご丁寧にありがとうございました。