ウォーターサーバーとコーヒーマシンが一体化した画期的マシン >>

エクセルの文字データーですが、同じシート内にある文字データを簡単に「入れ替える」方法がありましたら教えて下さい。
違うセルにある文字データを「入れ替える」という作業をしたいのです。

現在は、その操作を知らないので、
 最初に移動したいデータをどこかの空セルに移動、空いたところに移したいデータを移動 最初に移動したデータを後に空いたセルに再度移動しています。

入れ替えが多いもので簡単にしたいです・・・

このQ&Aに関連する最新のQ&A

A 回答 (6件)

選択した2つのセルの値を交換するマクロを作ってみました。


***マクロの登録***
1.下のマクロをコピーして標準モジュールに貼り付けて下さい。
  (標準モジュールの挿入:ツール→マクロ→マクロ→編集でVBE画面に移動し、挿入→標準モジュール)
2.シートでツール→マクロ→マクロ→(Koukanを選択して)オプションで
  ショートカットキー(Qにしましょう)を入力してOK→マクロダイアログを閉じます。
  うまくいっていれば、Ctrl+Shift+Qキーでこのマクロが機能します。

***交換処理***
1.交換する2つのセルの選択方法です。
  まず1つ目のセルを選択しCtrlキーを押しながら2つ目のセルを選択して下さい。
  マクロ実行時、2つ選択していなかったらメッセージが出ます。
    (2つ以外はエラーです)
2.Ctrl+Shift+Qキーで2つのセルの値が交換されます。
3.何回でも繰り返せます。
    テスト用のシート等を作って試してください。楽になればいいですね。

Option Explicit

Public Sub Koukan()
Dim rg As Range '選択セルを調べるワーク変数
Dim rgChange(2) As Range '2つの選択セルを単独セルに分割
Dim rgCot As Long '選択セル数のカウンタ
For Each rg In Selection '選択セルを調べる
rgCot = rgCot + 1
If rgCot <= 2 Then
Set rgChange(rgCot) = rg
Else
Exit For '長大な範囲を選択していた場合の対応
End If
Next
If rgCot <> 2 Then '2個選択していなかったら中断
MsgBox "セルの選択方法が間違っています。中断します。"
Exit Sub
End If
'セル内容の交換
Dim rgWork(2) 'ワーク
rgWork(1) = rgChange(1)
rgWork(2) = rgChange(2)
Range(rgChange(1).Address) = rgWork(2)
Range(rgChange(2).Address) = rgWork(1)
End Sub
    • good
    • 2

#4を少し修正します。


>(標準モジュールの挿入:ツール→マクロ→マクロ→編集でVBE画面に移動し、挿入→標準モジュール)
と書いてしまいましたが、初期状態ではこんな操作はできませんでした。
メニューからツール→マクロ→Visual Basic Editor でVBE画面を起動して下さい。
    • good
    • 0
この回答へのお礼

マクロを組み込みました。
操作性も抜群で、早速利用させて頂きます。
有難う御座いました。

お礼日時:2001/05/11 10:44

AセルとBセルの内容をスワップするということですよね。


エクセルの基本機能ではこれは無理と思われます。
ただし、マクロを組めば、可能なことは可能です。

ちなみに以下のような内容になると思われます。

Aセルに移動し、マクロを起動。
1.起動時点のセル位置とセル内容を変数に保存。
2.Bセルを選択するようメッセージを表示。
Bセルに移動し、マクロを再開。
3.Bセルのセル内容を保存し、1.で保存したAセルのセル内容を貼り付け。
4.Aセルのセル位置を参照して、Bセルの内容を貼り付け。
    • good
    • 0
この回答へのお礼

マクロの組み方が判りません。
アドバイス有難う御座いました。

お礼日時:2001/05/11 10:46

行単位で、並び替え方にルールがあるなら、データ範囲をドラッグした痕、



ツール→並び替え

で可能かと思います。
「標準」では、昇順と降順しかないですが、
ツール→オプション で、「ユーザー設定リスト」を選んで、順番をいれると、オリジナルの並び替えができると思います。
    • good
    • 1
この回答へのお礼

アドバイス有難う御座います。

お礼日時:2001/05/11 10:47

列方向とか行方向とかに限定されるのであれば、


1.変更したい列・行を別の場所にコピーする
2.変更したいセルに =xx(セル番号) と入力し、文字データを取得する
3.できあがった列・行を「値のみ」で貼り付ける。
4.「1」でつくったデータを消す。

というのではいかがでしょう。

いずれにしても、地道な作業になりそうですが.....(^^;
何か計算式などで良い方法はないですかね?
    • good
    • 0
この回答へのお礼

アドバイス有難う御座います。

お礼日時:2001/05/11 10:48

hirocyanさんこんにちは


文字列を入れ替えるということでしたら、メニューバーの[編集]>[置換]として、検索する文字列と置換後の文字列を記入した後、[すべて置換]とすれば、一括で入れ替えられると思います。
データの順番を入れ替えるということでしたら、[データ]>[並べ替え]という機能があります。ヘルプで「並べ替え」を検索してください。

この回答への補足

説明が不足していました。
各々のデータは共通なデータではなく、まったく個別のデータです。
たとえば名前の入れ替えみたいなものです。
こちらの解釈の意味が違っていましたら御免なさい。

補足日時:2001/05/10 17:49
    • good
    • 1
この回答へのお礼

アドバイス有難う御座います。

お礼日時:2001/05/11 10:49

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qexcelでセルの交換

excelでセルの交換が出来るでしょうか?例えば、
 A1…みかん
 A2…りんご
 A3…ぶどう
 A4…なし
 A5…メロン
があったとします。これでA1とA4を交換して、
 A1…なし
 A2…りんご
 A3…ぶどう
 A4…みかん
 A5…メロン
としたいのですがなにかいい方法はないでしょうか。
できるだけ簡単な方法がいいのですが…。

Aベストアンサー

以前の質問に、こんなものがありました。↓
http://oshiete1.goo.ne.jp/kotaeru.php3?q=74186

Qエクセルでセルの入れ替え

エクセルでの質問です。
数式で、離れたセルを交換することは可能ですか?
席順表を作っているのですが、席が替わったときに、簡単に入れ替えたいのです。

Aベストアンサー

>例えば、A1と、D3の内容を入れ替える、ということをしたいのです。コピー、なんかではなくて、数式とか、1回で、できる方法が知りたいです。

ユーザー関数でも作ればできそうな気もしますが・・・
結局のところは、自動ではなく「意図的にあるセルの値と他のセルの値をを一定の法則なく交換する」ということになりますよね。

切り貼りした方が効率的なような気がしますが?

回答にならなくてすみません。

Q(エクセル)データの入れ替え

例えば、A1とB1のセルに入力したものをコピーor切り取り&ペーストを使わずに
ほぼ同時に入れ替えられるような方法はあるでしょうか?

よろしくお願い致します。

Aベストアンサー

私の方法を申し上げます。
(1)B1セルを選択し、右クリック
(2)切り取り
(3)A1セルを選択し、右クリック
(4)切り取ったセルの挿入
これでA1とB1が入れ替わります。

Qエクセルで打ち込んだ数字を自動で別シートに表示したい

エクセルでセルに打ち込んだ数字を自動で別シートに表示できる方法があれば、教えてください。

例えば、シート1のC1に5を打ち込んだら、シート2のD2にシート1で打ち込んだ5が自動で表示される。

また1列すべてを自動で表示させる場合、一つのセルの時と違いがありましたら教えてください。よろしくお願いします。

Aベストアンサー

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コピー&リンク貼り付けを使うと便利です。

例)例)シート1のC1~C5に何かを入力したら、
  シート2のD2~D7にシート1で打ち込んだものが自動で表示される

  シート1にあるコピー元のセルを範囲選択して、
  シート2のD2の上で「右クリック」⇒「形式を選択して貼り付け」
  をクリックします。

  そして出てきた小さな画面の左下にある「リンク貼り付け」という
  ボタンをクリックすると完成です。
  試してみてください。。

  念のためにリンク貼り付けを図解しているURLを載せておきます。
  参考にしてみてくださいね。。
  http://www.geocities.jp/office_inoue/excel/eq21.htm

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コ...続きを読む

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

Q複数セルの入れ替え方法 excel vba

以下のケース
    A列  B列  C列 ・・・・

    あ町 理科  C100
 → い町  英語  C200
    さ町  数学  C300     
 → ウ町  習字  C400

   →は選択されている行。

     これを入れ替えて以下の並びにしたいのです。
     あ町 理科  C100
     ウ町  英語  C200
     さ町  数学  C300 
     い町  習字  C400 

    

Aベストアンサー

Sub ExchangeSelectedCell()
Dim xRange As Range
Dim xRow(1 To 10) As Long
Dim xPart As Long
If Selection.Areas.Count > 1 Then
xPart = 1
For Each xRange In Selection.Areas
MsgBox (xPart & " 番目に選択されたのは、" & "行:" & xRange.row)
If (xRow(1) = 0) Then
xRow(1) = xRange.row
Else
xRow(2) = xRange.row
If (xRow(1) > xRow(2)) Then
xRow(2) = xRow(1)
xRow(1) = xRange.row
End If
Exit For
End If
xPart = xPart + 1
Next xRange
Else
Exit Sub
End If
With ActiveSheet
.Rows(xRow(2)).Copy
.Rows(xRow(2)).Insert
.Cells(xRow(2), "A") = .Cells(xRow(1), "A")
.Cells(xRow(1), "A") = .Cells(xRow(2) + 1, "A")
.Rows(xRow(2) + 1).Delete
End With
End Sub

Sub ExchangeSelectedCell()
Dim xRange As Range
Dim xRow(1 To 10) As Long
Dim xPart As Long
If Selection.Areas.Count > 1 Then
xPart = 1
For Each xRange In Selection.Areas
MsgBox (xPart & " 番目に選択されたのは、" & "行:" & xRange.row)
If (xRow(1) = 0) Then
xRow(1) = xRange.row
Else
xRow(2) = xRange.row
If (xRow(1) > xRow(2)) Then
xRow(2) = xRow(1)
xRow(1) = xRange.row
End If
Exit For
End If
xPart = xPart + 1
Next xRange
Else
Exit Sub
End If
With Act...続きを読む

QEXCEL(IF関数)でCELLの色を変える。

例えば、IF関数で真ならセルの色を赤色にしたり、文字の色を変えたりする関数とかはあるのでしょうか?わかりません・・・知ってる方いらっしゃれば教えて下さい。

Aベストアンサー

こんばんは。

関数ではありませんが‥

<条件付き書式>ではダメなのでしょうか?

メニュー<書式>-<条件付き書式> です。

どのような条件を想定していらっしゃるのかわかりませんが、
<条件付き書式>については↓の参考URLをご覧ください。

▽条件付き書式・その1
http://homepage1.nifty.com/kenzo30/ex_kisosyo/ex_ks_syokyu4.htm

▽条件付き書式・その2
http://homepage1.nifty.com/kenzo30/ex_kisosyo/ex_ks_syokyu5.htm

参考URL:http://homepage1.nifty.com/kenzo30/ex_kisosyo/ex_ks_syokyu4.htm

Q表の上下を入れ替える

エクセルで作成した表を、あとから見たら、
「上下逆のほうがよかったなぁ」と思いました。

上下を入れ替えることってできますか?

Aベストアンサー

いくつかの行があって、その上下の順序を変えるということであれば、

表の横の列に、1,2,3,・・・に数字を入れて、
入れ替えたい範囲を選んで、
「データ」→「並べ替え」→「キー」に上に数字の列を選んで、
降順のチェックを入れて、OKを押す。

他にスマートな方法があるかもですが、私はそうしてます。

Qエクセルで条件に一致したセルの隣のセルを取得したい

下のような「得点」という名前のシートがあります。
(「田中」のセルがA1です。)

 [ 田中 ][ 10 ][ 200 ]
 [ 山田 ][ 21 ][ 150 ]
 [ 佐藤 ][ 76 ][ 250 ]
 [ 鈴木 ][ 53 ][ 350 ]

別のシートのA1セルに、「佐藤」と入力すると、

 [ 佐藤 ]

「得点」シートから「佐藤」の列を見つけて、B1、C1に

 [ 佐藤 ][ 76 ][ 250 ]

のように表示させたいのですが、B1、C1にはどのような式を書けば良いのでしょうか。
「得点」シートでは氏名が重複する事はありません。
IF文を使うと思うのですが、いまいち良く分かりませんでした。

よろしくおねがい致します。

Aベストアンサー

こんにちは!
VLOOKUP関数で対応できます。
IF関数と併用すればエラー処理が可能です。

Excel2007以降のバージョンであれば
B1セルに
=IFERROR(VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0),"")
としてC1セルまでオートフィルでコピー!
そのまま下へコピーすると行が2行目以降でも対応できます。

Excel2003までの場合は
=IF($A1="","",VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0))

としてみてください、m(_ _)m

Qエクセル 表を大きく、紙いっぱいに印刷したい

エクセルで表を作りました。
印刷プレビューで確認したところ
用紙に対して表が小さく見栄えがしません。

一つ一ついじればできると思いますが、
簡単に、
用紙いっぱいにフォントも大きくし、表も大きくし、
印刷するやり方はありますか。
教えてください。

Aベストアンサー

CtrlキーとPのキーを同時に押すと「印刷」ダイアログが呼び出せます。その状態でAltキーとWのキーを同時に押すと「印刷プレビュー」が表示されますので、印刷のイメージがつかめます(必ずしもプレビュー通りには印刷されませんが)
印刷プレビュー画面の上にある、設定のボタンを押してあげれば、余白を少なくしたり、拡大縮小印刷をパーセンテージを指定しておこなえたりします。いずれにせよ、プレビューで確認しながら拡大率を決めていけばいいと思います。なお、「拡大縮小印刷」のところに「次のページ数に合わせて印刷をする」というチェックをいれて横1×縦1にしてあげれば自動で拡大縮小印刷ができる場合がありますが、やってみればわかりますが、特に縮小印刷の場合小さくなりすぎたりする場合もあります。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング