CEOブログ

横浜で活躍するホームページ作成・開発会社アットライズの代表取締役社長(CEO)が綴る、日々の奮闘記!!

備忘録

[備忘録]Excel:離れた2つのセルの値を入れ替える方法(スワップ)

投稿日:

基本機能にないのでマクロで実装

Excelを使っていると、2つのセルの値を入れ替えたい時がある。
プログラム言語には「swap」コマンドなど、一発で入れ替えができるコマンドがあったりもするが、Excelの基本機能にはない。。

※単純に選択したセルを別の場所に「挿入」するだけであれば、「選択セルの移動」(下記参考)で簡単にできるが、この方法だと単純な入れ替えでなく、(一旦「削除」してから指定場所に「挿入」することになるので)その間にあるセルも削除されたセル側に全てズレてしまう。。
参考: https://sakusaku-office.com/excel/post-10249/
 
結構ニーズのある機能だと思うので、基本機能に入れておいてほしいところだが、、
仕方ないので、マクロで自作した。

通常は1セルずつの入れ替えをすることが多いが、下記のように複数のセルを一気に入れ替えることも可能!(ただし、双方の行列数が一致している必要あり)

簡単入替ショートカット作成の3ステップ

ショートカットで簡単に実行できるようにするには、下記の3ステップが必要となる。

① 個人用マクロブック(PERSONAL.XLS)の作成
② 「離れたセルの値を交換(スワップ)」VBAを作成
③ マクロをショートカットキーに登録

順番に見ていこう!

※以下の詳細手順は「Excel2007」での操作です。(異なるバージョンでは若干違う操作になるかも。。)

ステップ①:個人用マクロブック(PERSONAL.XLS)の作成

通常マクロは、マクロを作成したExcelブックのみで有効になるが、それを全てのブックで有効にするためにPERSONAL.XLSを作成する。
 
■個人用マクロブック(PERSONAL.XLS)
参考: http://excel-magic.com/post-1024/

・Excelで新規ファイルを開く(左上のOfficeマーク → 新規作成 → 新しいブック)
→ 「開発」タブ → マクロの記録 → 「マクロの保存先」を「個人用マクロブック」に設定 → OK(特に何もせずマクロを終了) → Excelも終了
→ 「個人用マクロブックの変更を保存しますか?」アラートが出るので「はい」(このアラートは全てのExcelを終了した時に出る)
→ 下記が作成されている!
C:\Users\xxxxx\AppData\Roaming\Microsoft\Excel\XLSTART\PERSONAL.XLSB

※「Excel2019」の 場合:「表示」タブ → マクロ → マクロの記録 → 「マクロの保存先」で「個人用マクロブック」を選択し「OK」
 

ステップ②:「離れたセルの値を交換(スワップ)」VBAを作成

■VBA:離れたセルの値を交換(スワップ)
参考: http://sapphirespc.seesaa.net/article/471000426.html

・「開発」タブ → 「Visual basic」 → Visual Basic Editor(「Microsoft Visual basic」ウィンド)が開く

※「Excel2019」の 場合:
 ・「開発」タブがない場合 → 参考:https://atmarkit.itmedia.co.jp/ait/articles/2009/07/news021.html


→ 「VBAProject(PERSONAL.XLS)」→ 「標準モジュール」を右クリック → 「挿入」 → 「標準モジュール」 → エディタが開く
→ 以下のコードをコピペ

Public Sub swap()
Dim w, x As Range, y As Range
If Selection.Areas.Count <> 2 Then Exit Sub
Set x = Selection.Areas(1)
Set y = Selection.Areas(2)
w = x.Formula
x.Formula = y.Formula
y.Formula = w
End Sub

→ エディタを終了(右上の「×」)

・実際に試してみる
→ 入れ替えたいセルを2ヶ所選択(*1) → 「マクロ」 → 「swap」

(*1)
・2ヶ所目を選択する時は「Ctrlキー」を押しながらクリック
・入れ替える双方の行列数が一致している必要あり!

※※※ 注意事項 ※※※
(1)マクロで実行した場合「元に戻す」(Ctrl+z)が効かない!!
 なので、要注意!
 (再び同じセルを選択し、もう一度swapすれば戻せるが。。(^^;)
 ※入れ替え直後は(他のセルにマウスオンしなければ)、2つのセルが選択されたままになっているので、そのまま再び「入替(swap)」してやれば戻る。

(2)計算式もそのまま入れ替わるので要注意!(ただし、セルの色は入れ替わらない)
 他にも “クセ” があるかも知れないので、使う時は都度確認すべし!
 

ステップ③:マクロをショートカットキーに登録

このままでは、毎回マクロを起動するのに3ステップくらい要すので、ショートカットに登録しておく!

■ショートカットキーによるマクロの実行
参考: https://www.officepro.jp/excelmacro/run/index1.html
・「開発」タブ → マクロ → マクロ一覧の中から「swap」を選択 → オプション
→ 「マクロオプション」ウィンドで「ショートカットキー」に割り当てたいキーを入力

【注意】この際、既存のショートカットとバッティングしないように要注意!
 下記 ショートカット一覧等でチェックすべし。
 https://excel-ubara.com/EXCEL/EXCEL901.html#sec92

 調べると、ほとんどのショートカット(Ctrl+)が使われている。。

→ 今回は、Swapの「S」で連想しやすい「Ctrl+Shift+S」に割り当てた。(キーボードから Shift+S を入れたら、勝手に「Ctrl+Shift+S」になった!
 (マクロの保存先は「開いているすべてのブック」)
 
 

-備忘録


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

[備忘録]Gmail:複数アドレスに自動転送する方法

「フィルタ」機能を使う Gmailに届いたメールを、別のメルアドに自動転送するには、通常「メール転送とPOP/IMAP」メニューから転送設定を行うが、この機能だと 1アドレスにしか転送できない。 複数 …

[備忘録]拡張子[.264]ファイルを再生する方法

結構ニッチなファイル形式。。 拡張子「.264」という動画ファイルがあるが、、これを再生させるのに ちと手こずった。。 なので、ここに備忘録としてメモ。。 まずこの、拡張子「.264」なるファイル形式 …

[備忘録]Windows7:デスクトップのショートカットが消えた。。

保守トラブルシューティングツールが勝手に消すらしい。。 ある日いつものように作業開始したら、、何かちと違う。 昨日まであったデスクトップ上のショートカットアイコンが消えている! しかも1つではなく、複 …

[備忘録]ブラウザキャッシュさせない方法

頻繁に更新するファイルはキャッシュしたくない。。 ブラウザにキャッシュさせない方法はいくつかある。 ■metaタグに追記する 参考: https://techacademy.jp/magazine/3 …

[備忘録]Zoom:「ビデオを停止」したときのプロファイル画像変更方法

変更方法は2種類ある Zoomで、自分のカメラをOFFにしたいときは「ビデオの停止」をクリックすれば良い。 ただ、この場合デフォルト(初期設定)だと、名前が表示されるだけだ。。 とあるセミナーを受講中 …