こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

簡単な処理法

行が月表示で列が曜日表示の表を簡単に逆(行が曜日で列が月に
並べ替えたいのですが、INDEX関数ですとズレてしまいます。
良い方法を教えてください。

   A   B   C   D   E   F   G    H
1     4月  5月  6月  7月  8月  9月  10月
2  月   45   88   99   83   72   45   23
3  火   38   77   53   21   1   62   12
4  水   24   23   66
5  木
6  金
7  土
8  日

こんな感じで並んでいます。(空白部分も、数字は埋まっております)
エクセル関数で並べ替えたいのですが・・・。
よろしくお願いします。

投稿日時 - 2010-03-19 19:38:21

QNo.5764467

困ってます

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

>COLUMN(A1),ROW(A1)なのはなぜ?素人考えだとCOLUMN(D4),ROW(D4)なのですが・・・。

【方法1の練習1をもう一度,実際に手を動かして行ってください】
 別のセルに =COLUMN(A1) と入れて
 右に下にコピーします。
  結果は「1から始まる数字」が並びます

 また別のセルに =ROW(A1) と入れて
 右に下にコピーします
  結果は「1から始まる数字」が並びます。


【方法1の練習2】「シロウト考え」だと何がマズイ?
 別のセルに =COLUMN(D4) と入れて
 右に下にコピーします。
  結果は「4から始まる数字」が並びます

 また別のセルに =ROW(D4) と入れて
 右に下にコピーします
  結果は「4から始まる数字」が並びます。



【回答の解説】
INDEX関数に戻ります。

=INDEX($B$2:$H$8,COLUMN(A1),ROW(A1))
のCOLUMN(A1)やROW(A1)には,2回練習したように1と1が入ります。
つまり
=INDEX($B$2:$H$8,1,1)
です。
INDEX関数の関数のヘルプを見てみると,与えた範囲(この例だとB2:H8)の縦の1番目,横の1番目を取ってこいと命令していることが判ります。


元の表の範囲がD4からJ10に動いたとしても,与えた範囲(この例ではD4:J10)のやっぱり縦の1番目,横の1番目をまず取ってこさせるために
=INDEX($D$4:$J$10,1,1)
でないといけません。

つまり,1と1を入れる材料として「1から始まる」を確認したように
=INDEX($D$4:$J$10,COLUMN(A1),ROW(A1))
がやっぱり正しいわけです。


D4を使ったら「4から始まった」のを確認したように,D4を入れると
=INDEX($D$4:$J$10,4,4)
で縦の4番目で横の4番目が来てしまいますね?

COLUMN関数とROW関数それぞれの「場所の組み合わせでの結果の数字」をINDEX関数に入れてみて,範囲からどう値を取ってきてるのか再確認してください。

投稿日時 - 2010-03-22 15:29:38

補足

やっと理解できたような気がします。
とても親切な解説ありがとうございます。

投稿日時 - 2010-03-23 11:02:52

ANo.4

このQ&Aは役に立ちましたか?

7人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

こんばんは!
関数での回答はすでに出ていますので・・・
他の方法の一例です。

当方使用のExcel2003の場合ですが、
Sheetの空いているところに行・列の項目(曜日・月)を入力しておきます。
まずB2~データの最後までを範囲指定 → コピー → 
表示させたい一番左上のセルをクリック → 形式を選択して貼り付け → 「行列を入れ替える」にチェックを入れOK

最後に不要になった元データを削除します。

以上、参考になれば良いのですが
他に良い方法があれば読み流してくださいね。m(__)m

投稿日時 - 2010-03-19 20:53:34

補足

読み流すなどできるはずがありません。
このほうが簡単だと言う事がわかりました。
一つの方法として、使わせていただきます。

投稿日時 - 2010-03-22 13:07:59

ANo.2

方法1の練習1
別のセルに =COLUMN(A1) と入れて
右に下にコピーします
また別のセルに =ROW(A1) と入れて
右に下にコピーします

>COLUMN(A1),ROW(A1)の意味を教えてください。

右に下にコピーしたときに,それぞれ実際に試して見てもらったような結果を計算してくれる関数です。
それぞれの関数についてfxボタン(関数ウィザード)で呼び出します。ウィザードに付いている「この関数のヘルプ」の青い文字をクリックして関数のヘルプの説明も読んでみると,少し参考になります。

仕上げにINDEX関数に戻り,
=INDEX($B$2:$H$8,COLUMN(A1),ROW(A1))

=INDEX($B$2:$H$8, 1, 1)

=INDEX($B$2:$H$8, 3, 2)
など,COLUMN関数とROW関数それぞれの「場所の組み合わせでの結果の数字」をINDEX関数に入れてみて,範囲からどう値を取ってきてるのか再確認してください。

投稿日時 - 2010-03-19 20:47:49

補足

COLUMN(A1),ROW(A1)は調べてみましたが、この表の開始位置、例えばA-1の位置をD-4から開始した表で試してみても、COLUMN(A1),ROW(A1)なのはなぜ?素人考えだとCOLUMN(D4),ROW(D4)なのですが・・・。
面倒でスミマセン。。親切な方にはトコトン聞いてみたくなります。

投稿日時 - 2010-03-22 13:09:45

ANo.1

方法1
=INDEX($B$2:$H$8,COLUMN(A1),ROW(A1))
と記入し,右に下にコピーします


方法2:
A1:H8をコピーし,型式を選んで貼り付けで行と列を入れ替えるにチェックしてOKします

投稿日時 - 2010-03-19 19:52:52

補足

簡単にできてしまいましたが、COLUMN(A1),ROW(A1)の意味を教えてください。

投稿日時 - 2010-03-19 20:17:08

あなたにオススメの質問