[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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
お返事ありがとうございます!
R1C1 アドレスになっている、ということは
.Address(ReferenceStyle:=xlR1C1)
↑これがいらない、ということでしょうか…?
いらないのかと思って、削除して試したこともあるのですが、
そうすると Consolidate の部分で中断してしまいます。
Array のところが違うのでしょうか…?
(Public) 2019/06/19(水) 17:20
HANNI = "R4C" & i & ":R34C" & i + 2 にすればエラーは無くなるはずです。
それ以外は見ていません。 (seiya) 2019/06/19(水) 17:24
(mm) 2019/06/19(水) 17:37
ご教示ありがとうございます。
お二方のおっしゃる通りに修正しましたところ、どちらも
.Range(Cells(3, i)).Consolidate Sources:= _ 以降の部分がエラーになってしまいました…
明日、もう少し格闘してみます。お返事ありがとうございました。
(Public) 2019/06/19(水) 18:14
>お二方のおっしゃる通りに修正しましたところ、どちらも これ本当?
>HANNI = .Range("R4C" こんなのがCompilerを通るとは考えにくいけど? (seiya) 2019/06/19(水) 18:41
お返事ありがとうございます。
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
せっかくご協力頂いたのに、力不足で解決できずすみませんでした;
お力添えありがとうございました!
マナ 様
お返事ありがとうございます。
ご教示いただいた構文で、ほぼ理想通りに動きました!
本当にありがとうございました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.