[[20230120172341]] 『「VBA 串刺し演算について」[ひめひめ] について』(クボタさん) ページの最後に飛ぶ

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

 

『「VBA 串刺し演算について」[ひめひめ] について』(クボタさん)

投稿
[[20200212122243]] 『VBA 串刺し演算について』(ひめひめ) 
について...
初めまして。
同じような VBAを作成していてご教授いただけるとうれしいです。
コピー元セル
A6からAN67→B8〜D8、B9〜D9のセルの場合は?
コピー先セルも同じセルの場所です。
よろしくお願いします。

< 使用 Excel:unknown、使用 OS:unknown >


 >A6からAN67→B8〜D8、B9〜D9のセルの場合は?

 >Const strCell As String = "!R6C1:R67C40"
 R6C1がRow(行)=6 Column(列)=1という意味でつまりA6セルのこと
 同じようにR67C40はAN67

 「VBA R1C1参照形式」 といった言葉で検索してください。

 B8〜D8、B9〜D9セル、つまりB8〜D9にするなら
 Const strCell As String = "!R8C2:R9C4"

 >コピー先セルも同じセルの場所です。
             ↓
 >Sheets("集計").Range("A6").Consolidate Sources:=Array(SH()), Function:=xlSum

 A6をB8に変えれば良いです。
(フォーキー) 2023/01/20(金) 17:40:04

早々にご回答くださり、ありがとうございます。
試してみます。
(クボタさん) 2023/01/21(土) 18:36:59

コメント失礼します。
先日の回答から試してみました。
実装してみたところ、
実行時エラー'1004
結合元範囲と結合先の範囲が重複しています。
とエラーが出てしまいます。
ご教授いただけると助かります。
よろしくお願いします。
(クボタさん) 2023/01/23(月) 11:16:39

 集計シートが一番左に無い場合、集計シートも集計対象に含むようになっているので、「重複」してしまっていたんじゃないですかね?
 集計シート以外すべて集計するようにしました。
 集計しないシートも存在する場合は、Case "" を1行ずつ増やしてください
    Sub Test_2()
        Dim strCell As String
        Dim SH()
        Dim i As Long
        strCell = "!" & Range("B8:D9").Address(, , xlR1C1)
        'すべてのシートを検索し、「集計」シート以外を集計対象とする
        For i = 1 To Worksheets.Count
            With Sheets(i)
                Select Case .Name
                    Case "集計" 'Case "集計しないシート名"の形で増やすと、対象外にできます。
                    'Case "集計しないシート名"
                    Case Else
                        ReDim Preserve SH(1 To i - 1)
                        SH(i - 1) = .Name & strCell
                End Select
            End With
        Next i
        Sheets("集計").Range("B6").Consolidate Sources:=Array(SH()), Function:=xlSum
        MsgBox "集計を出力しました"
    End Sub

(稲葉) 2023/01/23(月) 12:02:53


何度もごめんなさい。
実装してみましたが以下エラーとなりました。

実行時エラー'9
インデックスが有効範囲にありません。

初心者の初心者なのでどこを修正すればわからなくて…
よろしくお願いします。

(クボタさん) 2023/01/23(月) 13:03:16


 どの行なのかわかってないけど、もしかして「集計」シート自分で作ってないんですか?
(稲葉) 2023/01/23(月) 13:33:49

自作です。
Aファイル:集計シートのみのファイル
Bファイル:1〜30(31)の毎日のデータファイル(増える)
Aファイルを提出用に作成中しています。
AファイルBファイルともに同じ形式のものです。

Aファイル*左のシートは集計シート。
集計シートから後ろのシートは1〜今日までのデータとなります。

 VBAでコピーするようにしましたがデータは日々増えるため次に選択するときは
1、1(2)、2、2(2)となってしまうのでどうしようか悩んでいます。
データがあれば無視するといった内容を入れたらいいのかな…?
とりあえずはいまある全てのシートを選択としています。

*いちばんやりたいこと*
B8:D9のセルの部分を串刺し演算で集計表にコピーしたい。
できれば日々のシートをメッセージボックスで選択して串刺し演算できたら…
とりあえずはいまある全てのシートを選択としています。

詳細をお知らせせずごめんなさい。

(クボタさん) 2023/01/23(月) 14:20:04


 いや自作とか関係なくてですね・・・

 別にマクロ使わなくても数式で対応できますけどどうです?

 1)計算用に、開始 終了のシートを作って、集計対象のシートを挟むように配置する
   \集計/\開始/\1/\2/\1(1)/\2(2)/\終了/
 2)集計シートのB6を選択して
   =SUM(開始:終了!B8)
   と入力する。
 3)2)を必要な範囲にコピー

 これで開始シートと終了シートに挟まれたシートの合計が出せます。
(稲葉) 2023/01/23(月) 14:54:30

マクロで解決したかったのでごめんなさい。
前回のマクロで実装できました!
なにがダメだったのか…
ありがとうございました。
(クボタさん) 2023/01/23(月) 15:49:56

 >なにがダメだったのか…
 何となくだけど、別のブック開いてて、そっちがアクティブになってたんじゃないですかね?
(稲葉) 2023/01/23(月) 16:14:22

コピー元を開いていていたのでそっちがアクティブシートになっちゃってたかもです。
(クボタさん) 2023/01/23(月) 18:04:20

コメント返信:

[ 一覧(最新更新順) ]


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