Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


26008 / 76737 ←次へ | 前へ→

【56065】Re:行列変換を変数に収めてする方法
発言  かみちゃん  - 08/5/31(土) 16:15 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>現在使用しているマクロでは下のようなにある特定の行を行列変換させているのですが、回数がもの凄く多いので、処理に時間がかかってしまいます。そこで、これをB1〜B5までのデータを行列変換を使わずに、変数に収めてから違うシートに値としていれようと考えています。
>この場合、行数が100行ほどあるので、変数は100個も宣言しなければならないのでしょうか?また、この方法は実際にコピーをしてから行列変換をするより早くなるのでしょうか?

したいことがわかりづらいのですが、
以下のようなことでしょうか?

【Sheet1】
  A B C D
1 A1 B1 C1
2 A2 B2 C2
3 A3 B3 C3
4 A4 B4 C4
5 A5 B5 C5
6

   ↓

【Sheet2】
  A B C D E F
1 A1 A2 A3 A4 A5
2 B1 B2 B3 B4 B5
3 C1 C2 C3 C4 C5
4

それであれば、以下のようなコードでできます。
ポイントは、配列変数に取り込んで、Transpose関数で行列変換していることです。

Sub Sample()
 Dim vntData As Variant
 
 '配列変数に格納
 vntData = Sheets("Sheet1").Range("A1:C5").Value
 MsgBox "vntData(1,1)の値は " & vntData(1, 1)
 '行列変換
 Sheets("Sheet2").Range("A1").Resize(UBound(vntData, 2), UBound(vntData, 1)).Value = _
  WorksheetFunction.Transpose(vntData)
End Sub
1 hits

【56064】行列変換を変数に収めてする方法 KEI 08/5/31(土) 16:02 質問
【56065】Re:行列変換を変数に収めてする方法 かみちゃん 08/5/31(土) 16:15 発言
【56066】Re:行列変換を変数に収めてする方法 KEI 08/5/31(土) 16:45 お礼

26008 / 76737 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free