[[20190619151412]] 『VBA複数データの合計』(Public) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBA複数データの合計』(Public)

一つのシートに、4つの表を作成し、月ごとにシートを作成しています。
最終的に人別の合計を別シートにて求めたいです。

  Const Ws4 As String = "H31.4"
  Const Ws5 As String = "R1.5"
  Const Ws6 As String = "R1.6"
  Const Ws7 As String = "R1.7"
  Const Ws8 As String = "R1.8"
  Const Ws9 As String = "R1.9"
  Const Ws10 As String = "R1.10"
  Const Ws11 As String = "R1.11"
  Const Ws12 As String = "R1.12"
  Const Ws1 As String = "R2.1"
  Const Ws2 As String = "R2.2"
  Const Ws3 As String = "R2.3"
  Const Ws0 As String = "各人別集計"

With Sheets(Ws0)

    Dim HANNI As String, i As Long
    For i = 1 To 15 Step 4
    HANNI = Range("R4C" & i & ":R34C" & i + 2).Address(ReferenceStyle:=xlR1C1) ←デバックでエラー表示されます。

        .Range("4:200").Delete
        .Range(Cells(3, i)).Consolidate Sources:= _
              Array("'" & Ws4 & "'!" & HANNI, _
                    "'" & Ws5 & "'!" & HANNI, _
                    "'" & Ws6 & "'!" & HANNI, _
                    "'" & Ws7 & "'!" & HANNI, _
                    "'" & Ws8 & "'!" & HANNI, _
                    "'" & Ws9 & "'!" & HANNI, _
                    "'" & Ws10 & "'!" & HANNI, _
                    "'" & Ws11 & "'!" & HANNI, _
                    "'" & Ws12 & "'!" & HANNI, _
                    "'" & Ws1 & "'!" & HANNI, _
                    "'" & Ws2 & "'!" & HANNI, _
                    "'" & Ws3 & "'!" & HANNI), _
            Function:=xlSum, TopRow:=True, LeftColumn:=True, CreateLinks:=False
     Next

        .Range("Q3").Consolidate Sources:= _
              Array("'" & Ws0 & "'!R3C1:R50C3", _
                    "'" & Ws0 & "'!R3C5:R50C7", _
                    "'" & Ws0 & "'!R3C9:R50C11", _
                    "'" & Ws0 & "'!R3C13:R50C15"), _
            Function:=xlSum, TopRow:=True, LeftColumn:=True, CreateLinks:=False
        .Range("A1:C1,E1:G1,I1:K1,M1:O1").Columns.AutoFit

        With .Range("Q4").End(xlDown).Offset(1, 0)
            .Value = "合計"
            .HorizontalAlignment = xlCenter
        End With
    End With

かなりの長時間、ない頭をひねって知恵を絞っていますが…初心者にはまっっっっったく分からず、困り果てています。
そもそも、最初に定数を宣言している部分ももっとすっきりする気がして…シートをループさせればいいと思うのですが、そこに至る以前につまづいています。

どなたかご教示お願いいたします。

< 使用 Excel:Excel2007、使用 OS:Windows10 >


 >"R4C" & i & ":R34C" & i + 2
 この部分が既に R1C1 アドレスになっていますよ?
(seiya) 2019/06/19(水) 16:30

seiya 様

お返事ありがとうございます!
R1C1 アドレスになっている、ということは

.Address(ReferenceStyle:=xlR1C1)

↑これがいらない、ということでしょうか…?
いらないのかと思って、削除して試したこともあるのですが、
そうすると Consolidate の部分で中断してしまいます。

Array のところが違うのでしょうか…?
(Public) 2019/06/19(水) 17:20


 HANNI = "R4C" & i & ":R34C" & i + 2
 にすればエラーは無くなるはずです。

 それ以外は見ていません。
(seiya) 2019/06/19(水) 17:24

HANNI = Range("R4C"
ピリオドが抜けているのが気になりますが
 ↓
HANNI = .Range("R4C"

(mm) 2019/06/19(水) 17:37


seiya 様
mm 様

ご教示ありがとうございます。

お二方のおっしゃる通りに修正しましたところ、どちらも

 .Range(Cells(3, i)).Consolidate Sources:= _
以降の部分がエラーになってしまいました…

明日、もう少し格闘してみます。お返事ありがとうございました。
(Public) 2019/06/19(水) 18:14


 >お二方のおっしゃる通りに修正しましたところ、どちらも 
 これ本当?

 >HANNI = .Range("R4C"
 こんなのがCompilerを通るとは考えにくいけど?
(seiya) 2019/06/19(水) 18:41

seiya 様

お返事ありがとうございます。

HANNI = .Range("R4C" & i & ":R34C" & i + 2 )

↑に修正したところ、この部分のエラーは解消されたようで、先ほど記載しました統合処理の部分がデバックでエラー表示されています。

なかなか難しいものですね;
(Public) 2019/06/19(水) 18:52


 それでComplilerが通るんだたら、お手上げですね。
 私には理解できない現象が起こっているようなので私はこれで...
(seiya) 2019/06/19(水) 19:00

>この部分のエラーは解消されたようで

rangeは、A1形式でないとだめですよ。

おそらく、こんな感じでできます。
データのレイアウトがわからないので、雰囲気だけ。

 Option Explicit

 Sub test()
    Dim ws As Worksheet
    Dim wsCons As Worksheet
    Dim k As Long
    Dim tbl As Range
    Dim adr As String
    Dim adr2 As String

    Set wsCons = Worksheets("各人別集計")

    For k = 0 To 3
        adr = ""
        For Each ws In Worksheets
            If ws.Name <> wsCons.Name Then
                Set tbl = ws.Range("a4:c34").Offset(, k * 4)
                adr = adr & " " & tbl.Address(, , xlR1C1, True)
            End If
        Next

        With wsCons.Range("a3").Offset(, k * 4)
            .Consolidate Split(WorksheetFunction.Trim(adr)), xlSum, True, True
            adr2 = adr2 & " " & .CurrentRegion.Address(, , xlR1C1, True)
        End With
    Next

    wsCons.Range("Q3").Consolidate Split(WorksheetFunction.Trim(adr2)), xlSum, True, True

 End Sub

(マナ) 2019/06/19(水) 19:22


seiya 様

せっかくご協力頂いたのに、力不足で解決できずすみませんでした;
お力添えありがとうございました!

マナ 様

お返事ありがとうございます。
ご教示いただいた構文で、ほぼ理想通りに動きました!
本当にありがとうございましたm(_"_)m

(Public) 2019/06/20(木) 12:32


 >力不足で解決できずすみませんでした;
 力不足なんかの問題じゃない!

 あなたが嘘をついていないのなら、MicroSoftに報告すべき問題です。
 もし嘘なら、このスレッドを偶然見かけた人が誤解を生むような軽率な投稿はすべきではない。
(seiya) 2019/06/20(木) 13:00

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.