[[20210327121614]] 『SUM,INDIRECT関数をマクロで使いたい』(h.n) ページの最後に飛ぶ

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

 

『SUM,INDIRECT関数をマクロで使いたい』(h.n)

いつもお世話になっております。
エクセル関数において以下の関数で、数千行ある合計値を求める式をさくせいしました。
テスト段階ですので、まだ数行ですが、式としては正常に計算されておりました。
しかし数千行のセルへ以下の関数を入れてしまうとエクセルの速度が低下する
と想定しています。(その他セルにも関数が入っている為)

そこで以下関数をマクロで計算させたいのですが、マクロに置き換えた場合、どのようなコードになるのでしょうか、ご教授頂けないでしょうか。

エクセルの関数
=SUM(INDIRECT("AE"&VLOOKUP(AC11,AB:AF,5,FALSE)):INDIRECT("AE"&COUNTIF(AB:AB,AC11)+VLOOKUP(AC11,AB:AF,5,FALSE)-1))

マクロでのコード
以下SUMの所まで練習でやってみましたが、INDIRECTとVLOOKUPをどのように書いていいのか分からなくなり質問致しました。

s = Application.WorksheetFunction.Sum(Range("AE5 :AE6"))

そもそもマクロでは別の方法があるような気も致しますが、参考までに以下の事を行いたいです。
A列に数千行の重複した管理番号があります。
B列にA列それぞれの値が全て入っています。
A列の重複している全てのB列の合計を計算させたい。

A列  B列
13 500
12 200
11 300
13 450
12 700
11 800

合計値 13=950 12=900 11=1100

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


ワークシート関数のSUMIFは試されましたか?
(きまぐれおじさん) 2021/03/27(土) 12:45

 シート名 Sheet1

    |[A]|[B]
 [1]| 13|500
 [2]| 12|200
 [3]| 11|300
 [4]| 13|450
 [5]| 12|700
 [6]| 11|800

Option Explicit
Sub OneInstanceMain()

    Dim i As Long
    Dim v() As Variant
    Dim zD As Object
    Set zD = CreateObject("Scripting.Dictionary")
    With Worksheets("Sheet1")
        v = .Cells(1).CurrentRegion.Value
        .Copy
    End With
    For i = LBound(v, 1) To UBound(v, 1)
        zD(v(i, 1)) = zD(v(i, 1)) + v(i, 2)
    Next
    With ActiveSheet
        .UsedRange.Clear
        .Cells(1).Resize(zD.Count, 1) = Application.Transpose(zD.keys)
        .Cells(1, 2).Resize(zD.Count, 1) = Application.Transpose(zD.items)
    End With
    Erase v
    Set zD = Nothing
End Sub
m(__)m
(隠居じーさん) 2021/03/27(土) 13:02

ありがとうございます。

コードを勉強させて頂きます。

(h.n) 2021/03/27(土) 16:08


きまぐれおじさん、
SUMIFで行けそうです、恥ずかしながらSUMIFを思い出せず難しく考えておりました。
大変ありがとうございました。

隠居じーさん
うまく動作しました。
今回はB列で合計で説明しましたが、本来はC列やD列等に合計値があります。
B列は文字列が入力されており、A列〜C列又はD列もあわせて表示させたかったのですが
コードが理解できず現状の私の実力では難しそうでした。
しかしながら今後の為に、コードは参考に保存し、いづれ理解出来るようにしたいと思っております。
ありがとうございました。
(h.n) 2021/03/27(土) 19:22


 >しかし数千行のセルへ以下の関数を入れてしまうとエクセルの速度が低下する
 >と想定しています。(その他セルにも関数が入っている為)

 >SUMIFで行けそうです、恥ずかしながらSUMIFを思い出せず難しく考えておりました。

 ちょっと矛盾してないですか?

(半平太) 2021/03/27(土) 19:29


マクロで計算させるので大丈夫でよ。
(h.n) 2021/03/27(土) 20:49

コメント返信:

[ 一覧(最新更新順) ]


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