Excel VBA質問箱 IV

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

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


28028 / 76732 ←次へ | 前へ→

【54015】Re:ある区切りまでの足し算
発言  ichinose  - 08/2/20(水) 8:21 -

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

>上の方のプログラムで無事できました。
>ただ、自分の環境ではこれがエラーとなっえしまいます。


>>Cells(Rows.Count, "d").End(xlUp).Offset(1, 1).Value = _
>      Application.Sum(Range("d" & st, Cells(Rows.Count, "d").End(xlUp)))

それは、サンプルデータ(Vハチ さんが記述された内容から作成しています)
とVハチ さんの実際のデータに差異があるからですよね!!

その違いを見極めてください。


どんなエラーメッセージですか?


>なので、コメントアウトして実行しました。
>その結果、例えば、
>
>E列が10,20,30とあるとします。
>前スレであったとおり、10,20,30を基準に、並び替えをします。
>D列のの合計を出すのですが、30の合計が出してくれません。
>なぜか一番最後の合計のみ算出しれくれません。

そりゃあね・・、そのコメントにしたコードが最終行の合計をだすコードですからねえ。


>
>具体例:
>あいうえお  100  10
>さしすせそ  300  10
>はひふへほ  100  30
>なにぬねの  300  20
>まみむめも  200  30
>かきくけこ  200  10
>たちつてと  200  20
>  
>     ↓
>
>あいうえお  100  10
>かきくけこ  200  10
>さしすせそ  300  10
>          600
>たちつてと  200  20
>なにぬねの  300  20
>          500
>はひふへほ  100  30
>まみむめも  200  30

ですよね?だって、

>例えば、1行目から5行目のD列の合計をその区切り線(6行目)のE列にいれます。
つまり、合計値(600や500や300)は、E列に設定するのでしょう?


上記の例題をコードで記述し、同じ算出コードで試します。

これも新規ブックの標準モジュールにて

'====================================================================
Sub main()
  Dim rng As Range
  Dim ans As Variant
  Dim ele As Variant
  Dim st As Long
  Call mk_sample
  MsgBox "D列にサンプルデータ作成" & vbCrLf & _
      "これから、処理を開始します"
  st = 1
  Set rng = Range("d1", Cells(Rows.Count, "d").End(xlUp))
  With rng
    ans = Evaluate("transpose(if(" & .Address & _
           "="""",row(" & .Address & "),""" & Chr(&HFF) & """))")
    ans = Filter(ans, Chr(&HFF), False)
    st = 1
    For Each ele In ans
     Range("d" & ele).Value = _
        Application.Sum(Range("d" & st, "d" & (ele - 1)))
     st = ele + 1
     Next
    Cells(Rows.Count, "d").End(xlUp).Offset(1, 0).Value = _
     Application.Sum(Range("d" & st, Cells(Rows.Count, "d").End(xlUp)))
    End With
End Sub
'===================================================================
Sub mk_sample()
  Cells.ClearContents
  Range("c1:e9").Value = Evaluate("{""あいうえお"",100,10;" & _
                  """かきくけこ"",200,10;" & _
                  """さしすせそ"",300,10;" & _
                  """"","""","""";" & _
                  """たちつてと"",200,20;" & _
                  """なにぬねの"",300,20;" & _
                  """"","""","""";" & _
                  """はひふへほ"",100,30;" & _
                  """まみむめも"",200,30}")


End Sub


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

E列に合計値が入るでしょう?(Excel2002では、正しく表示されます)

さて、実際のデータとどこが違うのか よく調べてみて下さい

0 hits

【53933】ある区切りまでの足し算 Vハチ 08/2/16(土) 2:51 質問
【53935】Re:ある区切りまでの足し算 ichinose 08/2/16(土) 10:32 発言
【54006】Re:ある区切りまでの足し算 Vハチ 08/2/20(水) 0:21 発言
【54015】Re:ある区切りまでの足し算 ichinose 08/2/20(水) 8:21 発言
【53936】Re:ある区切りまでの足し算 VBWASURETA 08/2/16(土) 10:33 発言

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