• 締切済み

業務時間をまとめて表にする方法

VBで複数の日報の各セルに記入してある業務所要時間をまとめて別のシートに一覧表を作成するというツールを作っています。EXCELの内容は「業務項目」「所要時間」「業務にあらかじめ決められた番号」という並びになっています。こんな感じです。    xxxxに関する打合せ 1:30 1    月報作成      0:45 3    日報作成      1:15 3 上の例では、「文書作成業務」の番号は11というようにあらかじめ番号を決めておき記入しておきます。これは手作業で事前に入れておきます。 このようなEXCELが人数分存在しており、それらを読み込んでそれぞれの番号を元に所要時間を合計して、別のEXCELシートに一覧表を作ります。上の例でいうと、    1  1:30    2    3  2:00 という別シートができます。ということをVBで作成しているのですが、なかなかうまくいきません 1.まずエクセル上の所要時間がうまく取得できません(セルは書式設定で[h]:mmとしてます)おそらくtextにしたら取得できそうなのですが、値がテキストでは加算などの計算ができないようです 2.次に取得した時間を「同じ番号なら加算していく」というコードが分かりません ちなみに、時間を取得して別シートに転記するとこはこんな感じです。 For i = 1 To 50 If objExcelApp.Worksheets(strExcelSheet).Cells(i, 29).Value = "1" Then a = objExcelApp.Worksheets(strExcelSheet).Cells(i, 23).Text End If If a <> "" Then objExcelApp.Worksheets(strExcelSheet).Range("A5").Value = a End If Next End If Next ICount objExcelApp.Application.Quit Set objExcelApp = Nothing よろしくお願いします!!!!!

みんなの回答

noname#79209
noname#79209
回答No.2

ご質問の趣旨から外れますが、VBAを使わずに 業務番号でソートしてから、「データ」->「集計」ではダメなんですか? 全員分をまとめての業務番号別の集計なのならダメですけど。

  • 2531kbps
  • ベストアンサー率13% (183/1333)
回答No.1

> a = objExcelApp.Worksheets(strExcelSheet).Cells(i, 23).Text のaを最初にdate(timeだったかな?)で宣言して、 dim a as date dim a as timeどちらか cells(y, x)で取り込むときには、 a = Worksheets("8月度").Cells(i, 23) だけでよさそうです。"8月度"は文字列型変数でも可能です。 (aが作業時間の累積なんですよね?)