- ベストアンサー
VBAを使用して任意の範囲内のセル2個ずつを総当りでコピーする方法
- VBAを使用して、任意の範囲内のセル2個ずつを総当りでコピーする方法についての質問です。
- シートAのセル2個ずつをコピーしてシートBに貼り付けた後、シートBの計算結果をシートCに代入します。
- 実際の作業では、シートAの列数が130以上になり、VBAの作業回数が8,000回以上になりますが、試行錯誤してもうまくいかないため、質問させていただきました。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ループの回し方に注意すれば簡単な話しですよ。 サンプルですのでエラー処理は行っていません。 Sub Sample() Dim nTotal As Long Dim i, j, nRow As Long nTotal = Sheets("SheetA").Range("A1").End(xlToRight).Column For i = 1 To (nTotal - 1) For j = (i + 1) To nTotal Sheets("SheetB").Range("A1") = Sheets("SheetA").Cells(1, i) Sheets("SheetB").Range("B1") = Sheets("SheetA").Cells(1, j) nRow = nRow + 1 Sheets("SheetC").Cells(nRow, 1) = Sheets("SheetB").Range("C1") Sheets("SheetC").Cells(nRow, 2) = Sheets("SheetB").Range("D1") Next j Next i End Sub
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
問題の説明文が長く複雑で、計算式が入っている、などといっているが、判りにくい。VBAでも計算できるのでは。VBAに一本化しては。 コピーなどといっているが、セルの値(データ)を使っているだけのようだ。わざわざコピーなどといわない。 シートAの4行ぐらいの例を挙げて(今は1行しか書いてない、少なすぎる)、シートCのA列がどうなってほしいのか書いて質問したら。 どうせ総当りなら、For Nextのネストしかないでしょう。課題丸投げのようだが、少しやってみましたか。 シートCのA列とB列は同じ値ではないのか。であればA列だけの質問にては。 シートBも途中経過のようであるが、作る理由は。作るにしても(本題が出来れば自ずと判るから)質問しなくても良いのでは。 少し自分でやって、判らない点に質問を絞ること。
補足
質問を読んでいただきありがとうございます。 全てをVBAに一本化できれば早いのかもしれませんが、私にVBAの知識が全くないので 後々他のデータを付け足す場合はシートBの中の関数だけをいじれば済むようにしたいのです。 シートAの1行目はそれぞれの地域のコード番号で、 2行目以下には地域の総人口や学童数、就業人口、年代別人口数、 年度別人口数など、75行のデータが入っており、 シートBのA1とB2にコード番号を入れることで、 シートBの2行目~75行目にシートAのデータが入るように関数を 入れてあります。 その地域データを使った今後の人口増減予測、交通事故率予測、 犯罪率推移予測等が、シートBのC1~S1に計算結果で 出るようになっており、それをシートCにまとめたいのです。 判りにくく申し訳ありません。
お礼
ありがとうございます! このままで目指してたの結果を出す事ができました。 この10日間、必要に迫られて本屋に通ったりネットで調べたり いろいろ教えてもらったりしたのですが、思うように行かず、 最後の望みをここに託しておりました。 mt2008さん、本当に感謝いたします! 今までVBAの知識は『0』だったのですが、今回試行錯誤してみたことで、 VBAは思ってた以上に様々な事が出来る、という事が解り、 今後も勉強を続けて行きたいと思っています。 ありがとうございました。