| 
    
     |  | つんさん、こば〜 >Function mySub2(arg_r As Range) As String
 >Function mySub(argR1 As Range, arg_str As String) As Long
 これは完璧です。でも‥‥‥
 >これで、「=mysub(A5,mysub2(B1:B4))」という形で使ってみました。
 という使い方では、2つに分けた意味がありません。
 ひとつの関数で結合&分解しているのと同じ負荷が掛かります。
 つんさんが最初に作ったのと同じ様に個々のセルで毎回毎回、対象範囲を
 処理してしまいますから‥‥‥
 >集計表ですが、計算対象範囲は、1列430行で、
 >計算式を入れる範囲は、16行×48列=768セル
 768セル×参照先430セル⇒33万回
 
 先ず、作業「行」をひとつ用意して、その行の各セルに例えば
 [B10] =mysub2(B1:B4)
 といった風にして、『その列の文字列合体』結果を出します。
 それで、集計結果のセルには
 =mysub(A5, $B$10 )
 とします。
 
 こうすると、元データの1列を舐める処理は、データの列数分の回数だけで済みます
 集計セルからは、[B10]などの単一セルを参照するだけなので、集計セルの数と
 同じ回数しか参照しませんね。
 >集計表ですが、計算対象範囲は、1列430行で、
 >計算式を入れる範囲は、16行×48列=768セル
 mysub2 ‥‥‥ 48×430⇒20640
 mysub ‥‥‥ 768×1 ⇒  768
 (計)            21408回
 
 セル参照処理を31万回も省けます。
 
 
 |  |