Excel VBA質問箱 IV

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

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


4537 / 13644 ツリー ←次へ | 前へ→

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

【56064】行列変換を変数に収めてする方法
質問  KEI  - 08/5/31(土) 16:02 -

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

(A列,B列消去)
↓(行列変換)
B1B2B3B4B5
(今使っているマクロ)
  Sheets("作業領域").Activate
  Columns("A").Delete SHIFT:=xlToLeft
  Columns("B").Delete SHIFT:=xlToLeft
  Sheets("作業領域").Select
  Range("A1").Select
  Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
  Selection.Copy
  Sheets("結果").Select
  Range("A1").Select
  Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone,_
  SkipBlanks:=False, Transpose:=True

【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

【56066】Re:行列変換を変数に収めてする方法
お礼  KEI  - 08/5/31(土) 16:45 -

引用なし
パスワード
   ご回答ありがとうございます。
WorksheetFunction.Transposeという物があるのですか、確かにこれを使えば私の問題がクリアーできそうです。さっそく使って試してみようと思います。
お早いご回答助かります。

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