• ベストアンサー

Excel:複数条件の値代入について

Excelで、複数条件をキーにした値の代入方法を教えて下さい。 言葉ではお伝えづらいので添付の表をご確認頂きたいと思います。 A表(sheet1)には各人員の、月毎の金額、合計値が入っています。 ここから別シートのB表(sheet2)に、値の入っている最終月を代入したいのですが、 条件としては3種類あり、 1.値が12月まで埋まっている場合は「12」を代入 2.値が途中まで埋まっている(その後は空欄)場合は、埋まっている最終月を代入 3.【合計】の欄に0が入っている場合は、ブランクを代入 このような条件になっております。 関数で「if」を繰り返していくと、【合計】含めて13回繰り返す事になるため、 何かすっきりとできる手法があれば、ご教授頂けると有り難いです。 宜しくお願い致します。

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.5

シート2のA1セルには次の式を入力してB1セルまで横にドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(ROW(A1)>COUNTA(Sheet1!$A$2:$A$1000),"",IF(COLUMN(A1)=1,Sheet1!$A2,IF(SUM(Sheet1!$C2:$N2)=0,"",INDEX(Sheet1!$C$1:$N$1,MATCH(10^10,Sheet1!$C2:$N2)))))

rg6ms
質問者

補足

多数の回答、再度御礼申し上げます。 色々と頂いた回答を試した結果、 「間にデータが抜けている場合でも正確に最終月が代入できる」 という事がわかった、KURUMITO様の提示式を採用させて頂きました。 本当に有り難うございました。

その他の回答 (7)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.8

質問通りの条件で、例示のように空白セルまでは数値が連続して入力されているなら以下のような数式がわかりよいかもしれません。 =IF(VLOOKUP(A2,Sheet1!A:B,2,0)=0,"",INDEX(Sheet1!$C$1:$N$1,COUNT(Sheet1!C2:N2)))

回答No.7

No.5 KURUMITOさんの、 MATCH(10^10,Sheet1!$C2:$N2) には脱帽しました。 条件1&2は、これだけで実現出来てしまいます。 この方法に一票。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.6

No.2です! たびたびごめんなさい。 前回の数式は途中の列に空白セルがあっても対応できるように配列数式にしましたが、 C列から必ず列方向(右側)に数値でデータが埋まっていくのであれば 配列数式にする必要はありません。、 Sheet2のB2セルに =IF(COUNT(Sheet1!C2:N2),INDEX(Sheet1!C$1:N$1,,COUNT(Sheet1!C2:N2)),"") としてオートフィルで下へコピーしてみてください。 何度も失礼しました。m(_ _)m

  • MSZ006
  • ベストアンサー率38% (390/1011)
回答No.4

先の回答者様のご回答にOFFSET関数を加えて、 =IF(Sheet1!B2=0,"",OFFSET(Sheet1!$B$1,0,COUNT(Sheet1!C2:N2))) でどうでしょう。

回答No.3

シート2のB1に、 =IF(Sheet1!B2=0,"",COUNT(Sheet1!C2:N2)) →下へコピー でいいのではないでしょうか。 ただし、 ・1~3月空白、4~9月数値、10~12月空白 のような場合は、No.1さんのような回避策が必要になりますが。

rg6ms
質問者

補足

多数のご回答、ありがとうございます。 大変申し訳ありませんが、質問提示に不足がありました。 サンプルでは「1月~12月」の表記になっていますが、 実際の表は「1月~12月」であったり「4月~翌3月」 であったりする為、count関数は使用できない状態です。 (その為、あくまでC1~N1までの値を代入する事になります) 誤解を招く表記ですみませんでした。 もし他に手法があれば、ご教授頂けますでしょうか…?

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! 一例です。 Sheet2のA列はSheet1の名前順に入力済みだとします。 Sheet2のB1セルに =IF(COUNT(Sheet1!C2:N2),INDEX(Sheet1!C$1:N$1,,MAX(IF(Sheet1!C2:N2<>"",COLUMN(Sheet1!A1:L1)))),"") これは配列数式になってしまいますので、Shift+Ctrl+Enterで確定! この画面からコピー&ペーストする場合は 上記数式をコピー → B1セルを選択 → 数式バー内をクリック → 貼り付け そのまま(編集可能のまま)Shift+Ctrlキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 このB1セルをオートフィルで下へコピーしてみてください。m(_ _)m

noname#203218
noname#203218
回答No.1

空白セル数をカウントし、12から引けば結果が得られますが、この方法は仮に2月から始まる場合には、1月セルに空白セルがあると成立しませんので、1月セルには0を入力する必要があります。 sheet2のB2式 =IF(Sheet1!B2>0,12-COUNTBLANK(Sheet1!C2:N2),0)

関連するQ&A