Excel VBA質問箱 IV

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

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


51904 / 76738 ←次へ | 前へ→

【29685】Re:列と行を入れ替えてコピーする
発言  ichinose  - 05/10/11(火) 19:46 -

引用なし
パスワード
   ▼あさこ さん、座布団さん
こんばんは。


>もし、これがファイルをまたいだ場合どうしたらいいのでしょうか?
>本当に初心者ですみません。(>_<)
>
>例えばりんご.xlsのリンゴというシートのデータを
>総合.xlsのリンゴというシートに貼り付けたい場合なんですけど・・ 

仮にBook1.XlsのSheet1のセルA1から
   A
 1 10
 2 11
 3 12
 4 13
 5 14
 6 15
 7 16
 8 17
 9 18
 10 19

というようなデータが入っていたとして、

これをBook2.xlsのSheet2のセルA1から
   A B
 1 10 11
 2 12 13
 3 14 15
 4 16 17
 5 18 19

というデータを構成させるには、
標準モジュールに
'=======================================================
Sub test()
  Dim rng As Range
  Dim myarray As Variant
  With Workbooks("book1.xls").Worksheets("sheet1")
   myarray = sp_trans(.Range("a1", .Cells(.Rows.Count, 1).End(xlUp)))
   End With
  With Workbooks("book2.xls").Worksheets("sheet2")
   .Range("a1:b" & UBound(myarray, 1)).Value = myarray
   End With
End Sub
'=======================================================================
Function sp_trans(rng As Range, Optional Interval = 2) As Variant
'機能---指定されたセル範囲を指定された列数に再配置する
' input---- rng 再構成するセル範囲
'      interval 再構成列数
' output--- sp_trans n行 interval列の2次元配列
  ReDim ans(1 To Application.RoundUp(rng.Count / Interval, 0), 1 To Interval)
  For idx = 1 To rng.Count
   ans((idx - 1) \ Interval + 1, _
       ((idx - 1) Mod Interval) + 1) = rng.Cells(idx).Value
   Next
  sp_trans = ans()
  Erase ans()
End Function

でtestを実行してみて試してください。

0 hits

【29670】列と行を入れ替えてコピーする あさこ 05/10/11(火) 15:13 質問
【29671】Re:列と行を入れ替えてコピーする 座布団 05/10/11(火) 15:32 回答
【29676】Re:列と行を入れ替えてコピーする あさこ 05/10/11(火) 16:40 質問
【29685】Re:列と行を入れ替えてコピーする ichinose 05/10/11(火) 19:46 発言
【29716】Re:列と行を入れ替えてコピーする あさこ 05/10/12(水) 14:41 お礼
【29714】Re:列と行を入れ替えてコピーする 座布団 05/10/12(水) 14:10 回答
【29717】Re:列と行を入れ替えてコピーする あさこ 05/10/12(水) 15:08 お礼

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