[[20200508213534]] 『データの整理・集約をしたい』(まろん) ページの最後に飛ぶ

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

 

『データの整理・集約をしたい』(まろん)

	A列	B列	C列	D列	E列	F列	G列
1行目					3	4	5
2行目		年度	担当者	所属	ABC-DE	BCD-EF	CDE-FG
3行目	1	2010	鈴木	営業			
4行目	2	2015	伊藤	総務		3000	2000
5行目	3	2017	山本	販売	2000		
6行目	4	2009	佐藤	営業			8000
7行目	5	2007	山田	総務	4000	6000	5000

というデータがあります。
下記のように変更したいのですが、現在、手作業で変更しています。膨大な量があるため、関数もしくはマクロで簡単に出来たらなと思っております。
テレワークになってしまい、アドバイスも受けられず途方に暮れております。
関数でもマクロでもよいので、楽に纏められる方法を教えて頂けると有難いです

	A列	B列	C列	D列	E列	F列	G列
		年度	担当者	所属	型番	NO.	金額
1行目	1	2010	鈴木	営業			
2行目	2	2015	伊藤	総務	BCD-EF	4	3000
3行目	3	2017	山本	販売	ABC-DE	3	2000
4行目	4	2009	佐藤	営業	CDE-FG	5	8000
5行目	5	2007	山田	総務	ABC-DE	3	4000
6行目	5	2007	山田	総務	BCD-EF	4	6000
7行目	2	2015	伊藤	総務	CDE-FG	5	2000
8行目	5	2007	山田	総務	CDE-FG	5	5000

<現在行っている作業>

E列、F列に空白列を追加
E2に"型番”と入力
F2に"NO."と入力
G2で縦方向に「空白以外」でフィルタ
G2をE列(型番の列)にコピペする
G1をF列(数量の列)にコピペする

H2で縦方向に「空白以外」でフィルタ
H2をE列(型番の列)にコピペする
H1をF列(数量の列)にコピペする
H列以外に値が入っていた場合、その行をコピーし、最終行の下に貼付
貼り付けした行のG列以降から、H列以外の値を削除し、H列の値をG列へ貼付

I2で縦方向に「空白以外」でフィルタ
I3以下に値が入っていた場合、
I2をE列(型番の列)にコピペする
I1をF列(数量の列)にコピペする
I列以外に値が入っていた場合、その行をコピーし、最終行の下に貼付
貼り付けした行のG列以降から、I列以外の値を削除し、I列の値をG列へ貼付

G2に"金額"と変更
2行目はH列以降削除

最終的にG列に金額を集約したいです。

※元の表にはは100列、20000行あります

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


 ちょっと希望図が腑に落ちないのですが、

 こんな風なA列の昇順じゃマズいのですか?
  ↓
  行  _A_  __B__  ___C___  __D__  __ E __   F   __G__
   1       年度   担当者   所属   型番     NO.  金額 
   2    1  2010   鈴木     営業                      
   3    2  2015   伊藤     総務   BCD-EF     4  3000 
   4    2  2015   伊藤     総務   CDE-FG     5  2000 
   5    3  2017   山本     販売   ABC-DE     3  2000 
   6    4  2009   佐藤     営業   CDE-FG     5  8000 
   7    5  2007   山田     総務   ABC-DE     3  4000 
   8    5  2007   山田     総務   BCD-EF     4  6000 
   9    5  2007   山田     総務   CDE-FG     5  5000 

(半平太) 2020/05/09(土) 00:02


半平太様

ありがとうございます。説明が下手かつ希望図の行数がズレており、分かりにくくて申し訳ありません。

希望図は下記になります

	A列	B列	C列	D列	E列	F列	G列
1行目		年度	担当者	所属	型番	NO.	金額
2行目	1	2010	鈴木	営業			
3行目	2	2015	伊藤	総務	BCD-EF	4	3000
4行目	3	2017	山本	販売	ABC-DE	3	2000
5行目	4	2009	佐藤	営業	CDE-FG	5	8000
6行目	5	2007	山田	総務	ABC-DE	3	4000
7行目	5	2007	山田	総務	BCD-EF	4	6000
8行目	2	2015	伊藤	総務	CDE-FG	5	2000
9行目	5	2007	山田	総務	CDE-FG	5	5000

実施したい事をもう一度整理してみました。

元々の表
1列目に入っている数字はNO.
E2:G2に入っている数字は型番になります
E3:G7に入っている数字は金額になります

・E,F,G列を追加し、型番、NO. 、金額と入力
・元の表にE3:E7に数字が入っていた場合、元の表から型番、NO.、金額をそれぞれよりコピペ(金額は移動)
・これをF,G列も実施

という順であれば良いのですが、同じ行の別型番にも金額が入っている場合があるので(例 E7:G7)、そこが自分にとって厄介でして、関数もマクロも詳しくないため、どうしたものかと途方に暮れております。

金額が重複して入っている場合は、行を最終行の下へコピペし、型番、NO.を元データからコピペし、金額に関しては元データから移動させたいです。

それと、ご指摘いただいた件、A列で昇順にする必要はないので、そのままで大丈夫ですが、今後のために A列で昇順にする際にどのようなコード(マクロであれば)を追加したら良いか教えて頂けると有難いです。

(まろん) 2020/05/09(土) 07:56


 >それと、ご指摘いただいた件、A列で昇順にする必要はないので、そのままで大丈夫ですが、
 >今後のために A列で昇順にする際にどのようなコード(マクロであれば)を追加したら良いか教えて頂けると有難いです。 

 いえ、マクロだと頭から処理して行くので、自然体で上から順に並ぶので
 手操作のような結果にする方が大変なんです。

 ところで "元の表には100列、20000行" とありますね。

 すると、金額が全部埋まっていれば2百万行にもなるでしょうが、
 実際はパラパラの印象があり、出来上がりは4、5千行程度のものなのでしょうか?

 ※処理速度に思いを馳せてお聞きしております。

(半平太) 2020/05/09(土) 08:41


 下記マクロは、データ量・処理速度に配慮しておりません。

 「元データ」シートの「シート見出」を右クリックして、サブメニューの「コードの選択」を選び
  VBE画面を出したら、画面中央の白いエリアに
  後記マクロコードを貼り付け、F5キー押下で実行する。

 希望図はSheet2に作成されます。(無ければ、Sheet2を追加してからマクロ実行してください)

 ’シートモジュールに貼り付けるマクロ(標準モジュールではない)

 Enum fixNum
     キー = 1
     年度
     担当
     所属
     型番
     NO
     金額
 End Enum

 Sub Sample()
     Dim dicT As Object
     Dim Box(1 To 7)
     Dim rToProc As Range
     Dim NoAry, ModelAry
     Dim RW As Long, CL As Long
     Dim Key
     Dim Rightest As Long

     Rem データ収集
     Set rToProc = Me.Range("A1").CurrentRegion
     Set dicT = CreateObject("Scripting.Dictionary")

     Key = 1
     dicT(Key) = [{"","年度","担当者","所属","型番","NO.","金額"}]

     NoAry = rToProc.Rows(1).Value
     ModelAry = rToProc.Rows(2).Value

     For RW = 3 To rToProc.Rows.Count

         Box(キー) = rToProc(RW, キー)
         Box(年度) = rToProc(RW, 年度)
         Box(担当) = rToProc(RW, 担当)
         Box(所属) = rToProc(RW, 所属)

         Rightest = Me.Cells(RW, rToProc.Columns.Count + 1).End(xlToLeft).Column

         If Rightest < 5 Then '金額皆無
             Key = Key + 1
             Box(型番) = Empty
             Box(NO) = Empty
             Box(金額) = Empty
             dicT(Key) = Box
         Else
             For CL = 5 To Rightest
                 If Not IsEmpty(rToProc(RW, CL)) Then
                     Key = Key + 1
                     Box(型番) = ModelAry(1, CL)
                     Box(NO) = NoAry(1, CL)
                     Box(金額) = rToProc(RW, CL)

                     dicT(Key) = Box
                 End If
             Next CL
         End If
     Next RW

     Rem 出力
     With Sheets("Sheet2")
         .Cells.ClearContents
         .Range("A1").Resize(dicT.Count, 7) = Application.Index(dicT.items, 0, 0)
     End With

     dicT.RemoveAll
 End Sub

(半平太) 2020/05/09(土) 09:42


半平太様

ありがとうございます。
実行出来ました。感動です!
A列は昇順で構いませんので、楽になりました。

マクロを実際の項目名に修正したり、項目名を増やしたりする時は、

 Enum fixNum
     キー = 1
     年度
     担当
     所属
     型番
     NO
     金額
 End Enum

 dicT(Key) = [{"","年度","担当者","所属","型番","NO.","金額"}]

         Box(キー) = rToProc(RW, キー)
         Box(年度) = rToProc(RW, 年度)
         Box(担当) = rToProc(RW, 担当)
         Box(所属) = rToProc(RW, 所属)

以上3か所の文字列を変更するという認識で大丈夫でしょうか?

それと、実際のデータも全部埋まっている訳ではなく、パラパラと入っています。

最終的な行数ですが、現時点ではまだ手作業が終わっていないため正確ではありませんが、もし金額が何も入っていない行があった場合(入力漏れなどで)、その行を削除するという事をすれば行数は少なくなるのかなと思いますが、空白行を残した場合は3-40,000行ほどかと思います。

(まろん) 2020/05/09(土) 10:13


 >マクロを実際の項目名に修正したり、項目名を増やしたりする時は、

 項目名の修正は、dicT(Key)の1文だけでいいんですが、
 平仄がとれてないとわざわざEnumを書いた意味がなくなるので、
 他も一緒に変更した方がベターでしょうね。

 項目の追加は、他にも下文の決め打ち数値にも影響が出ます。
 ※ 具体的にどんな追加なのか分からないので、こちらでは明言しかねます。

  Dim Box(1 To 7)
  If Rightest < 5 Then '金額皆無
  For CL = 5 To Rightest
  .Range("A1").Resize(dicT.Count, 7) = Application.Index(dicT.items, 0, 0)

(半平太) 2020/05/09(土) 10:36


半平太様

ありがとうございます。

返信が遅くなり申し訳ありません。

追加で教えて頂ければ幸いです。
例ですと元の項目名がA-D列にしか入っていないのですが、実際のデータは項目名が26個(Z列まで)あります。
27(AA)列目以降の金額データを見て、同じ動作をさせたいですが、マクロの構文に項目名を26個入力する方法以外に何か方法はありますでしょうか?

お手数をおかけしますがよろしくお願い致します。
(まろん) 2020/05/09(土) 14:42


 >27(AA)列目以降の金額データを見て、同じ動作をさせたい

 同じ動作と言われましても、こちらでは推測の域を出ません。

 具体的に希望図はどうなるんですか?

(半平太) 2020/05/09(土) 15:08


 こんにちは!
ちょっと書いてみました。。。
一応↓みたいな感じになりました。。。
データが多いということなのであらかじめ大きめに確保する方法にしました。
あまり空白が多いと足らない時があるかも(^^;
その辺はお勉強して応用して頂けると助かります。。。

 	年度	担当者	所属	a1	a2	a3	a4	a5	a6	a7	a8	a9	a10	a11	a12	a13	a14	a15	a16	a17	a18	a19	a20	a21	a22	型番	NO.	金額
1	2010	鈴木	営業	a2	a3	a4	a5	a6	a7	a8	a9	a10	a11	a12	a13	a14	a15	a16	a17	a18	a19	a20	a21	a22	a23			
2	2015	伊藤	総務	a3	a4	a5	a6	a7	a8	a9	a10	a11	a12	a13	a14	a15	a16	a17	a18	a19	a20	a21	a22	a23	a24	BCD-EF	4	3000
2	2015	伊藤	総務	a3	a4	a5	a6	a7	a8	a9	a10	a11	a12	a13	a14	a15	a16	a17	a18	a19	a20	a21	a22	a23	a24	CDE-FG	5	2000
3	2017	山本	販売	a4	a5	a6	a7	a8	a9	a10	a11	a12	a13	a14	a15	a16	a17	a18	a19	a20	a21	a22	a23	a24	a25	ABC-DE	3	2000
4	2009	佐藤	営業	a5	a6	a7	a8	a9	a10	a11	a12	a13	a14	a15	a16	a17	a18	a19	a20	a21	a22	a23	a24	a25	a26	CDE-FG	5	8000
5	2007	山田	総務	a6	a7	a8	a9	a10	a11	a12	a13	a14	a15	a16	a17	a18	a19	a20	a21	a22	a23	a24	a25	a26	a27	ABC-DE	3	4000
5	2007	山田	総務	a6	a7	a8	a9	a10	a11	a12	a13	a14	a15	a16	a17	a18	a19	a20	a21	a22	a23	a24	a25	a26	a27	BCD-EF	4	6000
5	2007	山田	総務	a6	a7	a8	a9	a10	a11	a12	a13	a14	a15	a16	a17	a18	a19	a20	a21	a22	a23	a24	a25	a26	a27	CDE-FG	5	5000

 Option Explicit
Sub てすと()
Dim MyA As Variant
Dim MyB As Variant
Dim v As Variant
Dim 項目 As Variant
Dim i As Long
Dim j As Long
Dim n As Long
Dim k As Long
Dim q As Long
With Sheets("Sheet1")
    MyA = .Range("A1").CurrentRegion.Resize(, 5).Value
    MyB = Intersect(.Range("A1").CurrentRegion, .Range("F:I")).Value
    項目 = .Range("A2").Resize(, UBound(MyA, 2)).Value
End With
'vの二次元方向を MyA+"型番", "NO.", "金額" の3つにする
ReDim v(1 To UBound(MyB, 2) * UBound(MyA, 1), 1 To UBound(MyA, 2) + 3)
For j = LBound(項目, 2) To UBound(項目, 2)
    v(1, j) = 項目(1, j)
Next
項目 = Array("型番", "NO.", "金額")
For j = LBound(項目) To UBound(項目)
    v(1, UBound(v, 2) - 2 + j) = 項目(j)
Next
k = 1
For i = LBound(MyA, 1) + 2 To UBound(MyA, 1)
    n = Application.CountA(Application.Index(MyB, i, 0))
    If n > 0 Then
        For n = 1 To n
            k = k + 1
            For j = LBound(MyA, 2) To UBound(MyA, 2)
                v(k, j) = MyA(i, j)
            Next
            For q = LBound(MyB, 2) To UBound(MyB, 2)
                If MyB(i, q) <> "" Then
                    v(k, UBound(v, 2) - 2) = MyB(2, q)
                    v(k, UBound(v, 2) - 1) = MyB(1, q)
                    v(k, UBound(v, 2)) = MyB(i, q)
                    MyB(i, q) = ""
                    Exit For
                End If
            Next
        Next
    Else
        k = k + 1
        For j = LBound(MyA, 2) To UBound(MyA, 2)
            v(k, j) = MyA(i, j)
        Next
    End If
Next
With Sheets("Sheet2")
    .Cells.Clear
    .Range("A1").Resize(k, UBound(v, 2)).Value = v
End With
Erase MyA, MyB, v, 項目
End Sub
(SoulMan) 2020/05/09(土) 16:22

半平太様

PCの具合が悪くなってしまい、返信が遅くなり申し訳ありません。
また、お願いしておきながら説明が不足になってしまい、申し訳ありませんでした。

>具体的に希望図はどうなるんですか?

希望図はSoulMan様に書いて頂いた図と同じになります。

元々の表
1列目に入っている数字はNO.
型番はE2:Z2に入っている
金額はAA3以降に入っている(AA列から約100列)

1.Z列の右に3列追加し、それぞれに 型番、NO. 、金額と入力
2.元の表27列目に金額が入っていた場合、元の表から型番、NO.、金額をそれぞれよりコピーし、1で追加した列に貼り付け(金額は移動)
3.これをAB列以降も実施

以上が実施したいことになります。
今後、項目列が増える可能性もあるため、項目名を入力する以外の方法があれば教えて頂けると有難いです。
よろしくお願い致します。

(まろん) 2020/05/11(月) 08:32


半平太様

すみません、希望図を貼るのを忘れておりました
SoulMan様の表をお借りしたました

 	年度	担当者	所属	a1	a2	a3	a4	a5	a6	a7	a8	a9	a10	a11	a12	a13	a14	a15	a16	a17	a18	a19	a20	a21	a22	型番	NO.	金額
1	2010	鈴木	営業	a2	a3	a4	a5	a6	a7	a8	a9	a10	a11	a12	a13	a14	a15	a16	a17	a18	a19	a20	a21	a22	a23			
2	2015	伊藤	総務	a3	a4	a5	a6	a7	a8	a9	a10	a11	a12	a13	a14	a15	a16	a17	a18	a19	a20	a21	a22	a23	a24	BCD-EF	4	3000
2	2015	伊藤	総務	a3	a4	a5	a6	a7	a8	a9	a10	a11	a12	a13	a14	a15	a16	a17	a18	a19	a20	a21	a22	a23	a24	CDE-FG	5	2000
3	2017	山本	販売	a4	a5	a6	a7	a8	a9	a10	a11	a12	a13	a14	a15	a16	a17	a18	a19	a20	a21	a22	a23	a24	a25	ABC-DE	3	2000
4	2009	佐藤	営業	a5	a6	a7	a8	a9	a10	a11	a12	a13	a14	a15	a16	a17	a18	a19	a20	a21	a22	a23	a24	a25	a26	CDE-FG	5	8000
5	2007	山田	総務	a6	a7	a8	a9	a10	a11	a12	a13	a14	a15	a16	a17	a18	a19	a20	a21	a22	a23	a24	a25	a26	a27	ABC-DE	3	4000
5	2007	山田	総務	a6	a7	a8	a9	a10	a11	a12	a13	a14	a15	a16	a17	a18	a19	a20	a21	a22	a23	a24	a25	a26	a27	BCD-EF	4	6000
5	2007	山田	総務	a6	a7	a8	a9	a10	a11	a12	a13	a14	a15	a16	a17	a18	a19	a20	a21	a22	a23	a24	a25	a26	a27	CDE-FG	5	5000
(まろん) 2020/05/11(月) 08:41

SoulMan様

ありがとうございます。
PCの具合が悪くなり、返信が遅くなってしまい申し訳ありませんでした

希望図はSoulMan様が書いてくださった通りになります
説明不足で分かりにくい文章だったかと思いますが、ご理解頂きありがとうございます。

教えて頂いたマクロで試してみたところ、AA-AC列では希望する動作が得られたのですが、AD列以降のデータが反映されませんでした(実際のデータはAA列以降 約100列ほど型番・金額が入っています)

今後項目が増えたり、型番が増える可能性もあるため、教えて頂いたマクロのどの部分を修正すれば良いかご教授頂けると有難いです。

よろしくお願い致します

(まろん) 2020/05/11(月) 08:44


SoulMan様

項目を26から増やす場合、下記を26から別の値へ変更

   MyA = .Range("A1").CurrentRegion.Resize(, 26).Value

型番数を増やした場合、Range("AA:AC"))のACを別の列番号(ANなど)を変更

   MyB = Intersect(.Range("A1").CurrentRegion, .Range("AA:AC")).Value

試しに変更してみたのですが、上手く行きませんでした。
上記以外にも変更する箇所はありますでしょうか?
(まろん) 2020/05/11(月) 10:00


SoulMan様

度々申し訳ございません。

項目を26から増減する場合、下記を26を別の値へ変更

   MyA = .Range("A1").CurrentRegion.Resize(, 26).Value

その上で、

   MyB = Intersect(.Range("A1").CurrentRegion, .Range("AA:AC")).Value

のRange("AA:AC"))部分を変更

というところまでは理解でき、Resize(, 26)を別の値へ、Range("AA:AC"))を別の列番号に修正してもマクロは動きました

しかしながら、Range("AA:AC"))を3列以上にした場合(AA:AG、G:Pなど)、「エラー9 インデックスが有効範囲にありません」と表示されてしまい、マクロが動きませんでした

(まろん) 2020/05/11(月) 10:28


 こんばんは!
日中はほとんど見れませんので極端にレスポンスが悪くなります。すみません。
そんな中で上のコードに注釈を入れておきましたので参考にしてみて下さい。
 >しかしながら、Range("AA:AC"))を3列以上にした場合(AA:AG、G:Pなど)、「エラー9 インデックスが有効範囲にありません

 結論から言いますと、、現状のコードのままでは最初の前提条件が変わってくるので離れた範囲を指定することは出来ません。
離れた範囲を指定する時は別途違う変数をもう一つ用意する必要があります。

 まぁ、、ここからは応用なので是非チャレンジして欲しいのと所詮は他人が書いたコードだという事です。
こういった掲示板でコードをもらうのはいいのですがここからが書いてもらった人への「礼」になると思うのです。
私に 様 はいりません。。 さん で十分です。

 それはさておきそんな私からのアドバイスをいくつか。。。
1.変数名は自分自身がわかりやすい名前に置き換える(この場合出来るだけ置換を使う)
2.小手先でいじるのではなく自分自身のコードに書き直す
3.コードは書いて書いて書きまくる

 老婆心的な小言はこれくらいでしょうか。。。。頑張ってくださいとしか言えませんが。。。。
また、、どこかで会えることを願っています。。。

 では、、では、、また。。。
(SoulMan) 2020/05/11(月) 19:52

 Enumは廃止します

 元データのシートモジュールに貼り付け

 Sub Sample()
     Dim dicT As Object
     Dim Ans, DefaultCol
     Dim Box
     Dim rToProc As Range
     Dim NoAry, ModelAry
     Dim RW As Long, CL As Long
     Dim Key
     Dim Rightest As Long
     Dim LastItemCol As Long

     Rem 項目最終列を照会する
     DefaultCol = Split(Cells(1, Me.[MATCH(TRUE,ISNUMBER(A1:SF1),0)-1]).Address, "$")(1)
     Ans = InputBox("項目最終列のアルファベットを入力" & vbLf & "例:Z", , DefaultCol)
     If Ans = "" Then
         Exit Sub
     Else
         LastItemCol = Range(Ans & 1).Column
     End If

     Rem データ収集
     Set rToProc = Me.Range("A1").CurrentRegion
     Set dicT = CreateObject("Scripting.Dictionary")

     'タイトル処理
     Box = Me.Range("A2").Resize(1, LastItemCol + 3).Value
     Box(1, LastItemCol + 1) = "型番"
     Box(1, LastItemCol + 2) = "NO"
     Box(1, LastItemCol + 3) = "金額"

     Key = 1
     dicT(Key) = Box 'タイトル書き込み

     NoAry = rToProc.Rows(1).Value
     ModelAry = rToProc.Rows(2).Value

     For RW = 3 To rToProc.Rows.Count '順次データ読み込み
         Box = rToProc.Rows(RW).Resize(1, LastItemCol + 3)

         Rightest = Me.Cells(RW, rToProc.Columns.Count + 1).End(xlToLeft).Column

         If Rightest <= LastItemCol Then '金額皆無
             Box(1, LastItemCol + 1) = Empty '型番
             Box(1, LastItemCol + 2) = Empty 'NO
             Box(1, LastItemCol + 3) = Empty '金額

             Key = Key + 1
             dicT(Key) = Box
         Else
             For CL = LastItemCol + 1 To Rightest '金額在り
                 If Not IsEmpty(rToProc(RW, CL)) Then
                     Box(1, LastItemCol + 1) = ModelAry(1, CL) '型番
                     Box(1, LastItemCol + 2) = NoAry(1, CL) 'NO
                     Box(1, LastItemCol + 3) = rToProc(RW, CL) '金額

                     Key = Key + 1
                     dicT(Key) = Box
                 End If
             Next CL
         End If
     Next RW

     Rem 出力
     With Sheets("Sheet2")
         .Cells.ClearContents
         .Range("A1").Resize(dicT.Count, LastItemCol + 3) = Application.Index(dicT.items, 0, 0)
     End With

     dicT.RemoveAll
 End Sub

(半平太) 2020/05/12(火) 08:49


SoulManさん

ありがとうございます。

すみません、「離れた範囲」という事が理解できないので教えて頂きたいのですが、
項目が5つ、金額データが3列あった場合、Resize(, 26)をResize(, 5)へ、そしてRange("AA:AC")をRange("F:H"))へ修正することでマクロは動きました
しかしながら、項目を5つのままで、金額を4列Range("F:I"))にした場合、エラーになってしまいました
項目は5つ(E列まで)、その隣のF列から 4列分のI列までの金額データを参照しているので、離れているという認識では無かったのですが、やはり離れた範囲として別の変数を追加するのでしょうか?

初心者の質問で申し訳ないのですが、教えてください。よろしくお願いします。

(まろん) 2020/05/12(火) 12:52


半平太様

ありがとうございます。
何度も曖昧な質問をしてしまい、申し訳ありませんでした。
お陰様でリストが希望図になりました。
今まで手作業で行っていたものが、こんな一瞬でリスト化されて本当に有難いです。

(まろん) 2020/05/12(火) 13:06


 解決されて良かったです。。。
 >すみません、「離れた範囲」という事が理解できないので教えて頂きたいのですが、
 というのは↓の様なことを指すと思っていました。
 >しかしながら、Range("AA:AC"))を3列以上にした場合(AA:AG、G:Pなど)
 どうも話がかみ合ってないです。。。

 もうこのことを論じても意味がないですし、、その労力もありませんのでここまでとします。

 >しかしながら、項目を5つのままで、金額を4列Range("F:I"))にした場合、エラーになってしまいました 
 上のコードを直しておきましたが、どこも止まらなかったので私のデータとデータが違っているのかもしれませんね。。。
(SoulMan) 2020/05/12(火) 19:52

 あっ、↓vの一次元方向が 3* UBound(MyA, 1)(3列×MyAの上限)の決め打ちしていたので列を増やして足らなくなったのですね。。。
 >ReDim v(1 To UBound(MyB, 2) * UBound(MyA, 1), 1 To UBound(MyA, 2) + 3)
 まぁ、、もうどうでもいいですけど。。。
(SoulMan) 2020/05/12(火) 20:12

コメント返信:

[ 一覧(最新更新順) ]


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