- 締切済み
EXCELの関数の書き方
縦軸に案件名を入れて、横軸に担当者で、その交わるセルに作業時間を入れていき工数管理を行う 表があるのですが、その表を、 案件名、担当者、作業時間 案件名、担当者、作業時間 案件名、担当者、作業時間 という風な並びにしたいのですが、関数が分からず困っています。案件は複数名で担当することも あり、VLOOKでためしたのですが重複してしまって上手くいきません。複数の作業時間が同じ案件(横列)に入っていたとしても、このような並びに出来る関数を教えていただければ助かります。 別のシートに飛ばす等なんでもいいのでご回答頂ければ本当に助かります。 関数が分からないため、現在100人分を手作業で別シートに移す仕事をしています。 本当に助けて欲しいです!!! 何卒、何卒。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- keithin
- ベストアンサー率66% (5278/7941)
- mshr1962
- ベストアンサー率39% (7417/18945)
元のデータが分からないと関数式も立てられないです。 概要から考えるとSUMIFS関数(EXCEL2007以降で使用可能)ですね。 =SUMIFS(シート名!作業時間の列範囲,シート名!案件名の列範囲,案件名のセル,シート名!担当者の列範囲,担当者のセル) もっとも、関数式使うより、ピボットテーブルを使った方が簡単に集計できますが。。。 http://www11.plala.or.jp/koma_Excel/contents7/mame7046/mame704601.html
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! >縦軸に案件名を入れて、横軸に担当者で、その交わるセルに作業時間を入れていき・・・ 具体的な表のレイアウトが判らないので、勝手に↓のような感じだとしています。 VBAになってしまいますが一例です。 左側が元データのSheet1で右側のSheet2に表示させるとします。 (Sheet2の項目行は入力済みだとします) Alt+F11キー → メニュー → 挿入 → VBE画面のカーソルが点滅しているところに ↓のコードをコピー&ペースト → Excel画面に戻りマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim i As Long, j As Long, lastRow As Long, c As Range, wS As Worksheet Set wS = Worksheets("Sheet1") With Worksheets("Sheet2") lastRow = .Cells(Rows.Count, "A").End(xlUp).Row If lastRow > 1 Then Range(.Cells(2, "A"), .Cells(lastRow, "C")).ClearContents End If For i = 2 To wS.Cells(Rows.Count, "A").End(xlUp).Row For j = 2 To wS.Cells(1, Columns.Count).End(xlToLeft).Column If wS.Cells(i, j) <> "" Then With .Cells(Rows.Count, "A").End(xlUp).Offset(1) .Value = wS.Cells(i, "A") .Offset(, 1) = wS.Cells(1, j) .Offset(, 2) = wS.Cells(i, j) End With End If Next j Next i End With End Sub 'この行まで ※ 関数でないので、Sheet1のデータ変更があるたびにマクロを実行する必要があります。m(_ _)m