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

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

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

はじめまして。Excel2003を使っています。 離れたセルを複数選択して(A1~D1)と(C6~D6)双方のデータを入れ替えることはできるでしょうか? ちなみに(A1には数字・文字のデータ B1~D1はセルの色づけだけ)同様に(C6に数字・文字データ B6~D6はセルの塗りつぶしだけ)の入れ替えです。 現在は、コピーして離れたセルに貼り付けてを繰り返して双方を入れ替えしてます。 VBAでコード表を作る能力がありませんので、作っていただければ助かります。 A範囲選択 Ctrl B範囲選択  Enter でデータの入れ替えができれば使いやすいのですが・・・ はじめての質問で説明が解りにくいかもしれませんがよろしくお願いします。

  • ty38
  • お礼率100% (2/2)

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

  • ベストアンサー
  • 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
質問者

補足

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

関連するQ&A

  • Excel2000で、入力セルだけ列の範囲選択の仕方

    こんにちは!Excelの範囲選択で困っているので助けてください。実際にはマクロで範囲を選択したいと考えております。    A   B   C 1  ああ  いい  うう 2  かか  きき  くく 3  ささ  せせ  そそ 4  ちち  てて  たた … という表がある時に、B1のセルからB列の入力されているセルの一番下のセルまでを選択したい場合は どの様に範囲選択をかけると良いのでしょうか? たとえば、B1を選択してから、Ctrl+Shift+Endを押すと、B1からC4までとか最後のセルまで選択できるんですが、同じ列の最終入力セルまでを選択したいのです。B1からB4までって感じで。 よろしくお願いします。

  • VBA、セルの選択範囲について

    下記のような表を用意し、   A   B  C  D  E 1    1月 2月 3月 合計 2 Aさん 1  2  3  6 3 Bさん 1  2  3  6 4 Cさん 1  2  3  6 5 合 計 3  6  9  18 セルの範囲選択を指定し別シートの任意のセルへコピーをVBAで行いたいのですが、 Aさん、Bさん、Cさんという範囲を選択する為に、合計という文字は含みたくないので、 Range("A2").Select Range(Selection, Selection.End(xlDown).Offset(-1)).Select と記載し、これは出来ました。 同様に、 1月、2月、3月という範囲も同様にxlToRightを使用し選択出来ました。 Range("B1").Select Range(Selection.End(xlToRight).Offset(, -1), Selection).Select しかし、B2:D4の範囲の指定の仕方がわかりませんでした。 データのレコード数は一定ではないのでB2:D4というように範囲を指定する事は出来ません。 そのときに応じてDさん、Eさんと増えたり、4月、5月と増えたりするので。 何か方法があればご指導お願いします。

  • 【Excel】アクティブセルから決まった範囲を選択する

    エクセルで、アクティブブセルから決まった範囲、 たとえば、セルA10がアクティブになっていれば A10~M10までを、セルB30がアクティブになっていたら B30~N30までを、常に1RX13C分を選択することを 覚えさせるような機能はありませんでしょうか? もしマクロでないと無理なら、マクロを教えていただけますでしょうか。

  • Excelのセルの中の見えないデータを消す方法

    Excelで以下のようなデータがあります。 A1にカーソルを置いてctrl+↓を押せばA5に飛ぶはずですが 空白のセルに何か入っているようで列の最終行A9まで行ってしまいます。 F2、エンターで消えるのですがデータが膨大なので手間がかかります。 簡単に消す方法はないでしょうか? ちなみに範囲をコピーして「形式を選択して貼り付け」「加算」で 一度に消えるようですが、データには文字も入っており、 これだと文字はコピーできないようです。 何か良い方法ありましたらご教示ください。<(_ _)> <例> |  A  |  B  |  C  |  D |  ------------------------------------------ 1|    |    |     |    | 2|    |    |     |    | 3|    |    |     |    | 4|    |    |     |    | 5|H7/2/6 | 赤川 | 1.56 | <25.0  | 6|     |     |     |    | 7|     |     |     |    | 8|H7/6/15| 貫川   | 2.56 | <35.6 | 9|     |     |     |    | 

  • VBA 範囲選択について

    複数のセルを選択してマクロを実行し、範囲選択の個数をMsgboxで表示したいです 例えばA1:B5、C6、D2:E3、を同時に範囲選択していたら「3個」のように表示 分かる方がいらっしゃるのであれば、回答をよろしくお願いします

  • EXCEL2003 印刷範囲の設定方法

    WindowsXp Excel2003を使用中です。 列幅 は A列(20.50 169ピクセル) B列(92.38 744ピクセル) 行高 は 全部(66) 表は 列 は A, B 行は 8 行 の表です。 この表を印刷するため 表の範囲をマウスでドラグして選択しようと shftキーを押しながら 列A B を選択しようとすると ひとりでにA B C D Eまで選択されてしまい ABだけ選択することができません。 印刷範囲は A1セルからD8セルまでの表となり 不要なCDE列が入ってしまいます。 どうしたら A1セルからB8セルまでの 範囲を選択できるのか を お教えください。

  • 関数の選択範囲の指定方法

    例えば、sum関数で、かなり広い範囲のセルの数字の合計を計算しようとしているとします。 この時のセル範囲の指定方法についての質問です。 関数ではなくて、通常のセル選択の場合、「Ctrl」キーと「Shift」キーを押しながら、矢印キーを押すと、文字が入力されている範囲の端から端までが選択できます。 このような方法を関数のセル廃位の選択でもやってみたいと考えています。 なお、計算するデータは空白行、または、空白列で区切られているとします。 よろしくお願いします。

  • Excellデータのちょっと複雑な行列入れ替えです。

    行列入れ替えです。 データ A  12         A  12 15 20 A 15 B 18 25 A 20 → C 12 B 18 D 15 B 25 C 12 D 15 のようにしたいのですが。よろしくお願いします。

  • 列選択で勝手に広範囲に範囲選択される

    よろしくお願いいたします。 ・使用環境 エクセル2010 表示は[標準]で[ページ レイアウト]は使用していません。 [範囲選択の拡張]は設定していません。 セルの結合とウィンドウ枠の固定の組み合わせで、行を選択した時に勝手に広範囲に範囲選択されます。 例1) A1:D5の表でA1:B1を結合 セル番地B2を選択して[ウィンドウ枠の固定]を設定 ↓ この状態で1行目を選択すると1~14行目が範囲選択されます。 2行目以降は通常通りに選択可能。 (ウィンドウ枠の固定はG10で固定した場合も同様) 例2) A1:D5の表でB1:C1を結合 セル番地B2を選択して[ウィンドウ枠の固定]を設定 ↓ 1行目を選択すると通常通り1行目のみ範囲選択されます。 セルの結合とウィンドウ枠の固定のどちらかのみの設定の場合は、この現象は発生しません。 使用しているの他のブックでは、列選択でも勝手に範囲選択される現象が起きています。 回避策がございましたら、ご教示ください。

  • jTable:複数選択時の選択範囲

    こんにちは。 javaのjTableについてお伺いしたいことがあります。 jTableを[ctrl]キーを押しながら左クリックを押すと複数のセルを選択できるようにしたいと思います。「列」を(A,B,C,D…)で表し、「行」を(1,2,3,4…)で表すExcel風で言うと、(D1)→(C5)の順で選択すると(D1)と(C5)だけが選択状態になり、色が変わることが理想です。 ところが現実に(D1)→(C5)の順で選択すると(D1)(C5)だけでなく(D5)(C1)も選択状態になり、そこの色も変わってしまいます。どうすれば理想の状態になるか、ご教授お願い致します。

    • ベストアンサー
    • Java

専門家に質問してみよう