質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%

Q&A

解決済

4回答

35383閲覧

EXCELの関数で、変数およびFor文のような記述を使いたい

muro

総合スコア99

0グッド

1クリップ

投稿2020/09/25 08:00

編集2020/09/25 08:28

イメージ説明

Excelのバージョンは2019です。

上の画像のように、各日付ごとにその日の合計人時を自動計算する表を作成したいと考えています。
7行目が自動計算したい部分となります。

A~Eさんがそれぞれ異なった人時を持っており、7行目のC列以降にその日の合計人時を表示しています。
予定が「休」だった場合、合計人時に含めていません。
このような処理をしたいのですが、どのように関数を書いたらいいのかわからず困っています。

excel

1=SUM(B2:B6)-IF(C2<>"",B2)-IF(C3<>"",B3)-IF(C4<>"",B4)-IF(C5<>"",B5)-IF(C6<>"",B6)

現状では、たとえば10月1日の場合、C7セルに上記のような関数で無理やり実現しています。
まずB列の人時の合計を取得し、それからC列の予定が空でなかったら、その人のB列に入っている人時で引いていってます。
しかしこれだと、在籍する人数分IF文が増えてしまううえに、別の日の場合はCをD、E、F…と順に置き換えなければならず、非常に面倒な手作業が増えてしまいます。
人数の追加にも対応できません。
せめてphpなどでいうfor文のような記述ができれば短くできそうなのですが、for文に当たる関数が見つかりませんでした。

excel

1for($i=1;$i<=++$i) { 2 $sum += IF(C$i<>"",B$i) 3} 4=SUM(B2:B6)-$sum

上記のような関数だとphpが混ざっているためエラーになりますが、やりたいこととしてはこのようなイメージです。
適した記述方法をご存知の方は、教えていただけないでしょうか?
あるいはfor文のようなことをせずとも実現可能である(あるいはそうでないと実現できない)場合は、そちらでも構いません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

radames1000

2020/09/25 08:22

Excelのバージョンによって使える関数が異なりますので、今後の質問ではバージョンも合わせて記載していただけると助かります。
muro

2020/09/25 08:28

今回の質問にもバージョンを追記いたしました。
guest

回答4

0

ベストアンサー

SUMIF関数を使いましょう。
C7セルに以下のような関数を入れて、7行目のセルに順にコピーしてみてください。

EXCEL

1=SUMIF(C2:C6,"",$B2:$B7)

関数の仕様については、色々紹介されているページがあるようなので、ググってみてください。

投稿2020/09/25 08:17

sizka_rn

総合スコア127

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Y.H.

2020/09/25 09:19

$B2:$B7 → $B2:$B6 まぁ、質問記載の表だと結果は同じになりますが。
sizka_rn

2020/09/25 11:20

おお、そうですね。失礼しました。
muro

2020/09/26 07:55

みなさま回答ありがとうございます。 今回はこれが一番、動作をイメージしやすかったので、こちらをベストアンサーとしました。
guest

0

(support.microsoft.com)SUMIF関数を使用しましょう。

  1. C7に数式=SUMIF(C2:C6,"",$B$2:$B$6)を設定
  2. C7をコピーしてD7~AG7に貼り付けてください。

投稿2020/09/25 08:19

Y.H.

総合スコア7918

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

C7にこれで大丈夫のはず。

Excel

1=SUMPRODUCT(($B$2:$B$6)*(C2:C6=""))

投稿2020/09/25 08:19

radames1000

総合スコア1925

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

これで行きませんか。
(C7へ貼り付けて複写して下さい)
=SUMPRODUCT(($B$2:$B$6)*(C2:C6<>"休"))

投稿2020/09/25 08:16

tosi

総合スコア553

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問