Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9157 / 13646 ツリー ←次へ | 前へ→

【28875】検索後SUM計算させたい!! TOKU 05/9/16(金) 23:21 質問[未読]
【28879】Re:検索後SUM計算させたい!! ichinose 05/9/17(土) 8:24 発言[未読]
【28944】Re:検索後SUM計算させたい!! TOKU 05/9/19(月) 8:57 質問[未読]
【28947】Re:検索後SUM計算させたい!! Hrk 05/9/19(月) 13:32 発言[未読]
【28962】Re:検索後SUM計算させたい!! ichinose 05/9/19(月) 19:07 発言[未読]
【29046】Re:検索後SUM計算させたい!! TOKU 05/9/22(木) 13:16 お礼[未読]

【28875】検索後SUM計算させたい!!
質問  TOKU  - 05/9/16(金) 23:21 -

引用なし
パスワード
   こんにちは。
標題の件ですが、以下のような図で区分別に検索後SUM計算させたいのですが
誰かご教授お願いしますm(__)m

区分  内容   時間
A        5分
B        10分
A        2分
B        3分
C        4分
C        4分
・        ・
・        ・

【28879】Re:検索後SUM計算させたい!!
発言  ichinose  - 05/9/17(土) 8:24 -

引用なし
パスワード
   ▼TOKU さん:
おはようございます。

>標題の件ですが、以下のような図で区分別に検索後SUM計算させたいのですが
>誰かご教授お願いしますm(__)m
せっかく入力データとなるシートのレイアウトを
記述されたのですから、
結果のレイアウトも記述してください。
ご質問の内容は、有体に言えば「情報を処理」するこです。

どんな情報を      <--(入力データの内容を例を交えて説明)
どのような処理をして  <--(プログラムの機能を意味します)
どのような結果を導くか <--(出力データの内容を例を交えて説明)

これらの情報が最低でも必要です。

>
>区分  内容   時間
> A        5分
> B        10分
> A        2分
> B        3分
> C        4分
> C        4分
> ・        ・
> ・        ・

それから、時間のデータですが、
5分、10分と例として記述されていますが、
文字として5分、10分と入力されていると、
合計計算をしてくれません(出来ないこともないですが、
そのための処理が必要になります)。
セルの書式として
ユーザー定義で「##0"分"」等と定義して、
セルに数字のみを入力するだけで
「5分」と表示される設定にしておきましょう。

これらの設定がなされていれば、

1 区分で並べ替え

2 「データ」---「集計」とクリックし、「集計の設定」ダイアログで
  グループの基準----区分
  集計の方法------- 合計
  集計するフィールド---時間

と言う指定で集計を行うと、区分別の時間の合計が集計されます。

試してみてください

【28944】Re:検索後SUM計算させたい!!
質問  TOKU  - 05/9/19(月) 8:57 -

引用なし
パスワード
   ▼ichinose さん:
おはようございます。
説明不足ですみません。

まず、ユーザーが区分の列にA〜Cを入力しその後、内容を入力し時間を
分単位で入力します。
最後に集計したい時にボタンを押すと集計結果の『時間』のセルに合計した時間を
表示させたいです。
※時間のセルには、予めセルの書式のユーザー定義で「##0"分"」等と定義してあります。

>>区分  内容   時間      【集計結果】
>> A        5分       区分   時間     
>> B        10分        A
>> A        2分        B
>> B        3分        C
>> C        4分
>> C        4分
>> ・        ・
>> ・        ・

以上、宜しくお願い致しますm(__)m

>▼TOKU さん:
>おはようございます。
>
>>標題の件ですが、以下のような図で区分別に検索後SUM計算させたいのですが
>>誰かご教授お願いしますm(__)m
>せっかく入力データとなるシートのレイアウトを
>記述されたのですから、
>結果のレイアウトも記述してください。
>ご質問の内容は、有体に言えば「情報を処理」するこです。
>
>どんな情報を      <--(入力データの内容を例を交えて説明)
>どのような処理をして  <--(プログラムの機能を意味します)
>どのような結果を導くか <--(出力データの内容を例を交えて説明)
>
>これらの情報が最低でも必要です。
>
>>
>>区分  内容   時間
>> A        5分
>> B        10分
>> A        2分
>> B        3分
>> C        4分
>> C        4分
>> ・        ・
>> ・        ・
>
>それから、時間のデータですが、
>5分、10分と例として記述されていますが、
>文字として5分、10分と入力されていると、
>合計計算をしてくれません(出来ないこともないですが、
>そのための処理が必要になります)。
>セルの書式として
>ユーザー定義で「##0"分"」等と定義して、
>セルに数字のみを入力するだけで
>「5分」と表示される設定にしておきましょう。
>
>これらの設定がなされていれば、
>
>1 区分で並べ替え
>
>2 「データ」---「集計」とクリックし、「集計の設定」ダイアログで
>  グループの基準----区分
>  集計の方法------- 合計
>  集計するフィールド---時間
>
>と言う指定で集計を行うと、区分別の時間の合計が集計されます。
>
>試してみてください

【28947】Re:検索後SUM計算させたい!!
発言  Hrk  - 05/9/19(月) 13:32 -

引用なし
パスワード
   ▼TOKU さん:
アドヴァンスオートフィルター後

Sub 集計()  
Dim rng As Range
Set rng = Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp))
If rng.Row >1 Then
rng.Cells(3, 5).Formula = "=subtotal(9," & rng.Address & ")"
End If
End Sub
のコードで出来ると思いますよ。

>
>>>区分  内容   時間      【集計結果】
>>> A        5分       区分   時間     
>>> B        10分        A
>>> A        2分        B
>>> B        3分        C
>>> C        4分
>>> C        4分
>>> ・        ・
>>> ・        ・
>
>以上、宜しくお願い致しますm(__)m
>

【28962】Re:検索後SUM計算させたい!!
発言  ichinose  - 05/9/19(月) 19:07 -

引用なし
パスワード
   ▼TOKU さん:
こんばんは。

>
>まず、ユーザーが区分の列にA〜Cを入力しその後、内容を入力し時間を
>分単位で入力します。
>最後に集計したい時にボタンを押すと集計結果の『時間』のセルに合計した時間を
>表示させたいです。
>※時間のセルには、予めセルの書式のユーザー定義で「##0"分"」等と定義してあります。
でしたら、
>>これらの設定がなされていれば、
>>
>>1 区分で並べ替え
>>
>>2 「データ」---「集計」とクリックし、「集計の設定」ダイアログで
>>  グループの基準----区分
>>  集計の方法------- 合計
>>  集計するフィールド---時間
>>
>>と言う指定で集計を行うと、区分別の時間の合計が集計されます。
これで算出できると思いますが・・・。


方法は、他にいろいろありますが・・・。


>
>>>区分  内容   時間      【集計結果】
>>> A        5分       区分   時間     
>>> B        10分        A
>>> A        2分        B
>>> B        3分        C
>>> C        4分
>>> C        4分
>>> ・        ・
>>> ・        ・
この元データがSheet1という名前の付いたシートの
A1からデータが入っているとします。
(A列--区分、B列---内容、C列---時間 但し、1行目は見出し)

また、集計結果は、Sheet2という名前の付いたシートの
セルA1から、以下のレイアウトで表示することを考えます。
(A列--区分、B列---時間 但し、1行目は見出し)


区分   時間     
A      7分
B     13分
C     8分


では、コードです。
標準モジュールに

'====================================================================
Sub main()
  Dim sh1rng As Range
  Dim sh2rng As Range
  Dim s1hani As String
  Dim s1goukei As String
  With Worksheets("sheet1")
   Set sh1rng = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
   End With
  Worksheets("sheet2").Cells.ClearContents
  sh1rng.AdvancedFilter xlFilterCopy, , Worksheets("sheet2").Range("a1"), True
  With Worksheets("sheet2")
    .Range("B1").Value = "時間"
    Set sh2rng = .Range("a2", .Cells(.Rows.Count, 1).End(xlUp))
    If sh2rng.Row > 1 Then
     s1hani = sh1rng.Offset(1, 0).Resize(sh1rng.Rows.Count - 1, 1).Address(, , , True)
     s1goukei = sh1rng.Offset(1, 2).Resize(sh1rng.Rows.Count - 1, 1).Address(, , , True)
     sh2rng.Offset(0, 1).NumberFormatLocal = "##0""分"""
     sh2rng.Offset(0, 1).Formula = "=sumif(" & s1hani & ",a2," & s1goukei & ")"
     End If
    End With
End Sub


mainを実行してみてください。

【29046】Re:検索後SUM計算させたい!!
お礼  TOKU  - 05/9/22(木) 13:16 -

引用なし
パスワード
   こんにちは。
やりたいことが出来ました。
ありがとうございましたm(__)m

9157 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free