- ベストアンサー
エクセルで横表記の日付を縦に取得する方法
- エクセルで横表記の生産予定表から、兵器名の横に列を挿入して、横表記の生産日を縦に追加する方法を知りたいです。
- 生産が2日にまたがっている爆弾と零戦の場合、先に予定の入っている日を取得するための条件区別や関数表記が分かりません。
- MAXやMIN、LARGE関数などで取得すると、先に取得したい日が後の日になってしまいます。2日間の数量大小に関係なく、2日またがり生産兵器の初日を必ず取得する方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
こんな感じでいかがでしょう。 =INDEX($C$1:$N$1,MATCH(TRUE,INDEX(C3:N3<>"",),0)) Excel2003で動作確認済。 C3:N3の各セルについて「空白でない」か否かの判定を行い、 TRUEが返る最初の要素の位置を取得して、C1:N1から対応するセルを返す。 内側のINDEXは、配列として処理させるためのダミー関数です。 =INDEX($C$1:$N$1,MATCH(TRUE,C3:N3<>"",0)) をCtrl+Shift+Enterで確定してもOK。 あるいは、判定でTRUEが返るセルについて、列番号の逆数をとり、 MAXで最初のセルを選んでから逆数を取り直せば、列番号が得られます。 =OFFSET($A$1,0,1/MAX(INDEX((C2:N2<>"")/COLUMN(C2:N2),))-1) 以上ご参考まで。 ■日経PC21 / エクセル「配列数式」講座 http://pc.nikkeibp.co.jp/pc21/special/hr/index.shtml
その他の回答 (1)
- kosouitom
- ベストアンサー率60% (6/10)
生産予定表の列数がこれ以上増えないという前提なら、 日付を取得したい列に =IF(ISBLANK(E4),IF(ISBLANK(F4),IF(ISBLANK(G4),IF(ISBLANK(H4),IF(ISBLANK(I4),IF(ISBLANK(J4),"-",$J$2),$I$2),$H$2),$G$2),$F$2),$E$2) という式を作成すれば取得できます。 ただ、列数がさらに増える場合はネストできるレベルに限界がある為、この方法では無理ですが・・・
お礼
回答有難うございました。参考にさせていただきます。 日が一ヶ月分あるので、この方法も考えましたが、無理みたいです。どちらか2日間の先の日を取得する(数量無関係に)方法を今も検討中です。 LOOKUP(MAX(C3:F3,C3:F3,$C$1:$F$1) またはOFFSET($B$1,0,MATCH(MIN(C3:F3),C3:F3,0)でも出せたのですが初日取得するための条件区別を考えています。
お礼
回答有難うございます。早々、ご教導いただいた方法を試してみます。
補足
補足の欄をお借りして、お礼申し上げます。回答者様のお答えで空白でないC3:F9までの配列の、各行の先頭の数値を取得できたのですが、どうも配列数式を普段、殆ど使わないもので、今一、理解に苦しんでいます。(INDEX関数の列番号、行番号のどちらから取得するのか?日付行のC1:F1にOFFSET関数と複合しましたが、エラーばかり出ます。) 配列数式を使わないのは、後からの数式変更、編集がやりにくいのでは?と私個人が思っているだけなんですが。 任意のセル領域、配列の中で、各行にある、1個または2個、複数の数値の内、空白以外の先頭の数値をMATCH関数で取得することです。 配列数式を使わない、セル参照方式で式を組めば、どうなるか今考えております。 有難うございました。