- ベストアンサー
マクロ→形式を選択して貼り付け[値・行列を入れ替える]
毎月、複数シートに対して上記作業をしています。 地味に貼り付けているのでは、時間もバカになりません。 マクロを使うことになるかと思いますが、簡略化する方法を教えて下さい。 ちなみに、マクロ初心者です(^-^;)
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
マクロの自動記録で、簡単にできます。 1.まず、コピーする範囲を選択して [コピー]。 2.貼り付け先の先頭セルを選択し [ツール]-[マクロ]-[新しいマクロの記録] と 進んで、[OK]。 3.[編集]-[形式を選択して貼り付け] で "行列を入れ替える" を指定。 4.マクロ終了ボタンをクリック。 以上です。 記録されたマクロを開くと、記録開始時に選択されていたセルが Range("B2").Select のように記録されていますので、この行を削除します。 このマクロをアイコンに登録しておき、運用するときは、コピーする範囲の選択 → [コピー] → 貼り付け先の先頭セル選択 まで操作した時点で、アイコンを クリックします。 アイコンを使わずに [ツール]-[マクロ]-[マクロ] から実行すると、エラーに なります。 (Win98SE, Excel2000)
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
VBAで Sheet1のデータ範囲を指定して Sub test01() Dim d(1000, 256) Dim cl As Range Worksheets("sheet1").Select i = 1: j = 1 m = 1 For Each cl In Selection If cl.Row = m Then Else j = j + 1 i = 1 End If d(i, j) = cl i = i + 1 m = cl.Row Next '----i,j逆転 Dim s As String s = InputBox("コピー先シート") Worksheets(s).Select Selection.Clear For k = 1 To i For l = 1 To j Worksheets(s).Cells(k, l) = d(k, l) Next l Next k End Sub を実行する。 d(1000, 256)としてますが、実は、256列以下の制約から256行以下になります。 これは値しか移しませんが。
お礼
ご回答ありがとうございます。 コピー先のシートは毎月変わるんです。ご紹介いただいた方法ですと、シートが 固定していた場合ですよね?
- hana-hana3
- ベストアンサー率31% (4940/15541)
Sub Macro1() 'コピー範囲選択 Range("D10:E12").Select Selection.Copy 'コピー先選択 Sheets("Sheet2").Select Range("D10").Select '行列を入れ替えて貼り付け Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True End Sub 定型業務なら、「ツール」-「マクロ」-「新しいマクロの記録」で、行った操作が記録できるので、何度も実行させることが出来ます。 あとは、VBAのヘルプやネットを探すと色々な情報を得られますよ。
お礼
>定型業務なら、「ツール」-「マクロ」-「新しいマクロの記録」で、行った操作が記録できるので、何度も実行させることが出来ます。 この程度でしたら分かります(^-^) ですが、今回はコピー元と先のシートが異なり、範囲はその都度変わります。 尚且つ、2つのファイル間での作業となります。 単に、貼り付けの業務のみを記録させたいのですが、業務セルが固定していないと 無理なのでしょうか・・・。 ご回答ありがとうございました。
お礼
すごーいっ! できましたよ!!ありがとうございましたm(_ _)m