• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL2003 選択した範囲のデータの入れ替え)

EXCEL2003 選択した範囲のデータの入れ替え

このQ&Aのポイント
  • Excel2003を使って、離れた範囲のデータを入れ替える方法について質問です。
  • 現在はコピー&ペーストを繰り返してデータを入れ替えていますが、VBAでコード表を作成できないため、より効率的な方法を知りたいと思っています。
  • 範囲を選択してエンターキーを押すだけでデータを入れ替える方法があれば、教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

> データの入れ替えはできましたが、書式(色の付いたセル)も同時に入れ替え可能にすることはできるのでしょうか? で、あれば別なシート等に一時コピーをして張り付ける形になると思います。 Sub sample2()   Dim wsSwap As Worksheet '一時コピー用シート      Application.ScreenUpdating = False 'シートを追加したりするので画面更新停止   Set wsSwap = Worksheets.Add '一時コピー用シート作成   ActiveSheet.Next.Activate 'アクティブシートを戻す   With Selection     If .Areas.Count <> 2 Then       MsgBox ("セル範囲を2つ選択してください")       Exit Sub     End If     If (UBound(.Areas(1).Value, 1) <> UBound(.Areas(2).Value, 1)) Or (UBound(.Areas(1).Value, 2) <> UBound(.Areas(2).Value, 2)) Then       MsgBox ("2つのセル範囲のサイズが違います")       Exit Sub     End If     'セル範囲のコピー     .Areas(1).Copy wsSwap.Range("A1")     .Areas(2).Copy .Areas(1)     wsSwap.Range("A1").CurrentRegion.Copy .Areas(2)   End With      '一時コピー用シートを削除   Application.DisplayAlerts = False   wsSwap.Delete   Application.DisplayAlerts = True   Application.ScreenUpdating = True '画面更新再開 End Sub

ty38
質問者

お礼

親切に教えていただいて感謝してます。 お礼も言わずにに質問ばかりですみませんでした。 質問の様な動作がエクセルの機能にありそうでないんですね プログラムで、自分のしたい作業が簡単になることで、こんなに感動できるとは思いませんでした。 自分でも小さなプログラムが作れるようになりたいです。 mt2008さん ありがとうございます。

ty38
質問者

補足

ありがとうございます。早速試してみました。 一つ目の選択範囲(A1データ B1色だけ C1色だけ D1データ E1 色だけ) 二つ目の選択範囲(A6データ B6色だけ C6色だけ D6色だけ E6 色だけ) 実行すると  一つ目の選択範囲に(A6データ B6色だけ C6色だけ D6色だけ E6 色だけ) 二つ目の選択範囲に(A1データ A1データ A1データ A1データ A1データ ) となります。 もとに戻そうとさらに実行すると 一つ目の選択範囲に(A1データ A1データ A1データ A1データ A1データ ) 二つ目の選択範囲に(A6データ A6データ A6データ A6データ A6データ ) となります。 二つ目の選択範囲はそのまま張り付きますが、一つ目の選択範囲の方が、先頭のセルの書式とデータが一つ目以降の選択範囲のセル全部に張り付けになるのですが、改善できるでしょうか? それができると助かります。 お願いします 

その他の回答 (1)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

簡単なサンプルです。 セル範囲を2つ選択した後でこのマクロを動かすとデータの入れ替えを行います。 「データ」の入れ替えるだけですので書式は入替えていません。 Sub sample()   Dim vWork() As Variant      With Selection.Areas     If .Count <> 2 Then       MsgBox ("セル範囲を2つ選択してください")       Exit Sub     End If     MsgBox (UBound(.Item(1).Value, 1))     If (UBound(.Item(1).Value, 1) <> UBound(.Item(2).Value, 1)) Or (UBound(.Item(1).Value, 2) <> UBound(.Item(2).Value, 2)) Then       MsgBox ("2つのセル範囲のサイズが違います")       Exit Sub     End If     vWork() = .Item(1).Value     .Item(1) = .Item(2).Value     .Item(2) = vWork()   End With End Sub

ty38
質問者

お礼

ありがとうございます。 マクロが動作して感動しました。 カユイ所に手が届きそうです。

ty38
質問者

補足

ご回答ありがとうございます。 データの入れ替えはできましたが、書式(色の付いたセル)も同時に入れ替え可能にすることはできるのでしょうか? イメージは セルのコピー 貼り付けのように書式とデータを一気に入れ替えたいです。