質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

3回答

6915閲覧

VBAによる行列コピー変換

rvsezuki

総合スコア66

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2018/01/23 07:55

E5からE15で取得した行を別のエクセルのB6からB16までに列に変換して
貼り付けるにはどうすればよいでしょうか?

よろしくお願い致します。
下記のようにやりましたが、うまくいきませんでした。

Set a(1) = Workbooks("A.xlsx").Worksheets("sheet1").Range("E5:E15") Set b(1) = Workbooks("B.xlsx").Worksheets("sheet1").Range("B6:B16") a(1).Copy(b(1))

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takito

2018/01/23 08:03 編集

「B6からB16」も行方向ですが誤記でしょうか? また、「うまくいきませんでした」だけでなく、どうなることを期待していたのにどういう結果になってしまったのか、具体的に書かれた方がより伝わりやすいと思います
rvsezuki

2018/01/23 08:06

ごめんさい 間違えました。E5からE15ではなくE5からO5でした
rvsezuki

2018/01/23 08:07

行方向のコピーを列に変換して貼り付けたいです。 上のVBAで回すと行のままB6からB16まで貼り付けられたものが出力されました。
takito

2018/01/23 09:41

質問内容を訂正ください
guest

回答3

0

ベストアンサー

Transpose関数で行列入れ替えて代入ではどうでしょうか。
クリップボード経由でコピー&ペーストするのはできれば避けたいです。

vba

1Dim rangeFrom as Range 2Dim rangeTo as Range 3 4Set rangeFrom = Workbooks("A.xlsx").Worksheets("sheet1").Range("E5:O5") 5Set rangeTo = Workbooks("B.xlsx").Worksheets("sheet1").Range("B6:B16") 6 7rangeFrom.Value = WorksheetFunction.Transpose(rangeTo.Value)

投稿2018/01/23 10:33

編集2018/01/23 10:57
hatena19

総合スコア33715

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

VBA

1Range("E6:E15").Select 2Selection.Copy 3Range("F5").Select 4Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ 5 False, Transpose:=True

ちなみに、

  • 開発>マクロの記録
  • E6からE15を選択&コピー、F5選択して、右クリック>形式を選択して貼り付け>行列を入れ替えるチェックボックスにチェックを入れてOK
  • 開発>記録終了

で出てきたVBAです。
EXCEL2016 VBA7.1です。

投稿2018/01/23 08:34

szk.

総合スコア1400

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

rangeにpasteが無いためエラーになってるように思えます。

例:貼り付け先のブックをアクティブにしてセル指定、その後ペースト

Workbooks("A.xlsx").Worksheets("sheet1").Range("E5:E15").copy Workbooks("B.xlsx").Worksheets("sheet1").activate Range("B6").select activesheet.paste

もしくは貼り付け先は全て貼り付けるセルを選択した状態にしておいて(B6セルが選択されている状態)

Workbooks("A.xlsx").Worksheets("sheet1").Range("E5:E15").copy Workbooks("B.xlsx").Worksheets("sheet1").paste

投稿2018/01/23 08:28

poko_poko

総合スコア168

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問