- 締切済み
エクセルで少し複雑な計算の求め方
はじめて利用させて頂きます。 エクセルにあまり詳しくなく、求めたい計算が出来なく、こちらの掲示板で質問させて頂きます。 添付のデータの赤いセルの部分を求めたいと思っています。 下記のような計算ができる関数などはあるのでしょうか? もしくは関数では導き出せないものでしょうか? 赤いセルに、例えば11/1にAさんの実施場所5+実施場所6で、A目標とB目標を示したいと思っています。 例)11月1日のAさん 実施場所5...4時間15分×5.6=23.8(A目標) 実施場所5...4時間15分×0.2=0.85(B目標) + 実施場所6...2時間15分×10.6=23.85(A目標) 実施場所6...2時間15分×0.4=0.9(B目標) = <A目標>23.8+23.85=47.65 <B目標>0.85+0.9=1.75 どういった計算方法があるか… 詳しい方がいらっしゃいましたら、何卒ご教授お願いいたします。
- みんなの回答 (3)
- 専門家の回答
- bunjii
- ベストアンサー率43% (3589/8249)
>下記のような計算ができる関数などはあるのでしょうか? Excel組込みの関数でも可能ですが実施場所とAさん、Bさん、Cさんの関連付けが提示されていないので何処かの列に実施者の名前を入力すれば算出可能です。 D2=SUMPRODUCT($B$9:$B$18*D$9:D$18*24*($G$9:$G$18=$A2)) D3=SUMPRODUCT($C$9:$C$18*D$9:D$18*24*($G$9:$G$18=$A2)) D2とD3を組み合わせで右へコピーすれば実施日毎の計算結果を得られます。 また、D2とD3を組み合わせで下へコピーすればBさん、Cさんの値も算出できます。 尚、Excelの組込み関数ではセルの背景色を検出できるものは無いようです。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! A列のAさん~Cさんのセル色で判断させたい!というコトでしょうか? そうであれば関数では色の判断はできないと思いますので、 VBAでの一例です。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペースト → Excel画面に戻りマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim myRow As Long, i As Long, j As Long, k As Long, myVal '▼D列~最終行まで For j = 4 To Cells(1, Columns.Count).End(xlToLeft).Column '▼j列の2行目~6行目データを消去 Cells(2, j).Resize(6).ClearContents '▼2行目~7行目まで For myRow = 2 To 7 '▼9行目~j列最終行まで For i = 9 To Cells(Rows.Count, j).End(xlUp).Row '▼myRow が偶数行の場合はB列(A目標列)「2」を、そうでない場合はC列(B目標列「3」)を k に格納 If myRow Mod 2 = 0 Then k = 2 Else k = 3 End If '▼i行j列にデータがあり、セル色が myRow行のA列セルと同じ場合は If Cells(i, j) <> "" And Cells(i, j).Interior.Color = Cells(myRow, "A").Interior.Color Then '▼myValにi,j列時間を小数点込みの「時間」に格納(例:4:15の場合は4.25時間とする) myVal = Hour(Cells(i, j)) + Minute(Cells(i, j)) / 60 Cells(myRow, j) = Cells(myRow, j) + Cells(i, k) * myVal End If Next i Next myRow Next j End Sub 'この行まで こんな感じではどうでしょうか? ※ どうしても関数で処理したい場合は、表の構成そのものから考え直す必要があると思います。 実施場所の行のどこかに「個人」が判断できるデータが必要です。m(_ _)m