• ベストアンサー

データーを同時に入れ替えたいのですが・・・・

エクセルのデーターがA列~J列まであり、また1行目~250行までにあるとします。 指示した行のデーターを同時に入れ替えることは可能ですか。 例えば、どこかのセル等で次のように指示した場合 データーを5行目のデーターを90行目のデーターとを同時に入れ替えたい時はどのようにしたらよいですか。関数やマクロで可能でしょうか。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

何度もごめんなさい。 余りに深く考えすぎていました。 単純にA列の番号を指定し、1行ずつを入れ替えれば良い!というコトですね! ↓にしてみてください。 Sub Sample3() Dim i As Long, k As Long, c As Range, r As Range i = InputBox("入替え元番号を入力") k = InputBox("入替え先番号を入力") Set c = Range("A:A").Find(what:=i, LookIn:=xlValues, lookat:=xlWhole) Set r = Range("A:A").Find(what:=k, LookIn:=xlValues, lookat:=xlWhole) On Error Resume Next If c.Row < r.Row Then i = c.Row k = r.Row Else i = r.Row k = c.Row End If Rows(k + 1).Insert Rows(i).Cut Cells(k + 1, "A") Rows(k).Cut Cells(i, "A") Rows(k).Delete End Sub これではどうでしょうか?m(_ _)m

ihuyi
質問者

お礼

色々とお世話になりました、できました。考えていることを伝えることが難しいこと再認識しました。不手際の多かったことお許し下さい。大変助かりました。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

続けてお邪魔します。 No.2の補足 >2行分あるとして、修正したいのですがお教え下さい。通し番号をつけていますので、 実は行番号での入れ替えでなく、通し番号を指定して入れ替えたい!というコトですよね? 尚、1データは2行が一塊になっている!というコトですので、 仮にA列に「通し番号」が入っていて2行ずつセルの結合がしてあるか、 1行おきに通し番号が入っている!という前提のコードにしてみました。 Sub Sample2() Dim firRow As Long, secRow As Long, c As Range, r As Range firRow = InputBox("差替え元番号を入力") secRow = InputBox("差替え先番号を入力") Set c = Range("A:A").Find(what:=firRow, LookIn:=xlValues, lookat:=xlWhole) Set r = Range("A:A").Find(what:=secRow, LookIn:=xlValues, lookat:=xlWhole) On Error Resume Next '←念のため If c.Row > r.Row Then firRow = r.Row secRow = c.Row Else firRow = c.Row secRow = r.Row End If Rows(secRow + 2).Resize(2).Insert Rows(firRow).Resize(2).Cut Cells(secRow + 2, "A") Rows(secRow).Resize(2).Cut Cells(firRow, "A") Rows(secRow).Resize(2).Delete End Sub ※ 操作方法は前回と一緒です。 今度はどうでしょうか?m(_ _)m

ihuyi
質問者

補足

ほんとうにありがとうございます、なんて親切な方ですか、感謝します。マクロを本当に勉強しようと思いました。但し、前回の補足で私の言い方が悪かったため違うご理解をされたようでした。「1行は表題があり、1行は科目説明の行があります。2行分あるとして、修正したいのですが・・・・・・」 これは私の言い方がまずかったです。 「実は行番号での入れ替えでなく、通し番号を指定して入れ替えたい!というコトですよね?」については、その通りなのです。 尚、1データは2行が一塊になっている!というコトですので・・・・・ これは塊ではなくて、1行目に表題・2行目に科目説明があって、2行が一塊ではないのです。あくまでも2行分入れ替えて行くのでなく、最初のNo.1マクロのように1行づつ入れ替える訳です。ただ、通し番号は3行目からつける訳ですから最初のNo.1マクロでは、行数と通し番号は一致して作って下さったのです。つまり、行目とすべきを「目」という言葉を抜かしたばかりに、ご迷惑をおかけしてしまったということです。ご理解いただけましたでしょうか。素人考えですが、最初のNo.1マクロの始まりを3行目から始めることに変更するだけでよいと思った訳です。説明が悪かったです、できれば3行目から始めるといことを理解して頂き厚かましいお願いですが、再度作って頂けませんか。あるいは修正すればできるようなら、お教え下さい。

全文を見る
すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

No.1です。 >Alt+F8キー をすると、入れ替え元の行を聞いてきますこれはどのようにしたら良いでしょうか インプットボックスが表示されている状態ですので、その画面の中にカーソルが点滅している窓があるはずです。 その中に、入れ替えたい行番号を入力 → Enter(またはOK) → 続いて同じ画面が出ますので そこにも先ほどの行と入れ替えたい行番号を入力 → Enter(またはOK) これで入力した二つの行が入れ替わるはずです。m(_ _)m

ihuyi
質問者

補足

できました、ありがとうございました。但し、1行は表題があり、1行は科目説明の行があります。2行分あるとして、修正したいのですがお教え下さい。通し番号をつけていますので、3行目から1~最後の行が268行目までになります。勝手なお願いで大変申し訳ありません。

全文を見る
すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! VBAでの一例です。 >例えば、どこかのセル等で次のように指示した場合 とありますが、インプットボックスに行番号を入力するようにしてみました。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面(カーソルが点滅しているところ)に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim i As Long, k As Long i = InputBox("入れ替え元の行を入力") k = InputBox("入れ替え先の行を入力") Rows(k + 1).Insert Rows(i).Cut Cells(k + 1, "A") Rows(k).Cut Rows(i) Rows(k).Delete End Sub 'この行まで こんな感じではどうでしょうか?m(_ _)m

ihuyi
質問者

補足

Alt+F8キー をすると、入れ替え元の行を聞いてきますこれはどのようにしたら良いでしょうか。初心者で申し訳ありません。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • マクロの記録で作成したマクロがデータが代わると誤動作する。

    マクロの記録で作成したマクロがデータが代わると誤動作する。 エクセルファイルにてA列からJ列までデータがあります。 行数は2,000行です。データは全て半角です。 A列の値が 1=入庫 2=出庫 3=戻入 と全て置換 B列の値が 1=社内品 2=社外品 3=受入 と全て置換。 でこのB列が3で受入に置換えたら その隣のA列の値を 受入に置き換えたい。 さらに A列の値が置換え後の入庫と戻入場合はその行のJ列の値を切り取り、K列に貼付をし A列の値が置換え後の出庫の場合はその行のJ列の値を切り取り、L列に貼付をしたいです。 マクロの記録で行いましたが、 いったんデータを全て消して別データを貼り付けしたらA列B列の置換えは正常ですが B列が3の場合にA列を再置換えと、J列の値を切り取り、K列、L列への貼付が 誤動作します。 (別データは雛形は同じです。入力規則も同じですがデータは変わります。  例:セルA1のデータは1、 新しいデータはセルA1は2 等) マクロの記録中では、並べ替えでソートし上記条件でセルを選択しコピペをしました。 並べ替えは2回です。 マクロ文を見ると、セル名がずらずら並んで、セル番号が指定されてます。 (マクロ記録中に選択したセル番号が全部記録されてます。) 文を見ると、上記条件で置換えやコピペでなく このセルはこう置換え、このセルはこうコピペのように読めます。 これでは、データが代わったら、別の動きになるのかな?と思いました。 こういう場合はマクロではどうやって記録すればいいでしょうか?

  • エクセルデータの並べ替えに関して

    エクセルデータの並べ替えに関して A列からH列まで数値が入っていて、それが8,000行くらいあります。(毎回変動します。) A1からH8000くらいのセルに値が入っています。 エクセルを縦長に使用しているので、このまま印刷をすると印刷面の右側半分以上が空白に なってしまいます。 マクロを利用して、これらの値を96行ごとに2列分けたいと思っていますが、どうやったら 良いか、教えていただけないでしょうか。 (マクロ実行前)--------------  A B C D E F G H 1 1 2 3 4 5 6 7 8  2 2 3 4 5 6 7 8 9 3 3 4 5 6 7 8 9 10 4 4 5 6 7 8 9 10 11 ・・・・・・ ---------------------------- のように下方向に数字が並んでいる場合、マクロを実行したら 次のようにしたいと思っています。 (マクロ実行後)--------------  A B C D E F G H (I) J K L M N O P Q 1 1 2 3 4 5 6 7 8(1行空き)97 98 99 100 101 102 103 104 2 2 3 4 5 6 7 8 9(1行空き)98 99 100 101 102 103 104 105 3 3 4 5 6 7 8 9 10(1行空き)99 100 101 102 103 104 105 4 4 5 6 7 8 9 10 11(1行空き)100 101 102 103 104 105 106 ・・・ 96 96 97 98 99 100 101 102 103(1行空き)192 193 194 195 196 197 198 199 97 193 194 195 196 197 198 199 200(1行空き)289 290 291 292 293 294 295 296 ・・・・・・ ---------------------------- (1)A1からH96までを切り取って、J1に貼り付ける。 (2)「(1)」で切り取って出来た空欄を削除して上方向にシフトする。 (3)A97からH192までを切り取って、J97に貼り付ける。 (4)「(2)」で切り取って出来た空欄を削除して上方向にシフトする。 といった操作を「切り取って出来た空欄を削除して上方向にシフトする。」という操作を しようとしたら上方向にシフトするデータがなくなるところまで続けたいと 思っています。

  • セル移動マクロを教えて下さい。

    エクセルで最終行の次の行(新規入力となる行)の左4つ目のセルに移動するマクロを作りたいのですが、出来るでしょうか。 例えば列Aに1から3000までのNOが入っているとします。 B列からD列までは他のデータに使用しているため新規入力データE列の行から右に入力しています。 NO125の行までデータ入力している場合、ボタンをクリックすれば、A列のNO126(新規入力行のA列)にセルが移動するマクロです。 よろしく、お願いいたします。

  • 同時操作不具合解消マクロ

    コールセンター勤務のExcelマクロ初心者です。 時間帯ごとの迷惑電話リストデータを作成するにあたり、オペレーター約100名から数ヶ月間情報を徴収しようと思っています。 受信業務の妨げにならないよう、簡単に操作できるExcelでのマクロを作成し、そのExcelを100名に配信する予定です。 オペレーターがマクロボタンを操作したら集計用Excelが開いてデータが集まる、というイメージです。(以降便宜上オペレーターが操作するExcelを子Excel、集計用Excelを親Excelと表記) 迷惑電話業者リストは既に手元にあり、「何時何分に電話が掛かってきているのか」のデータが欲しいのです。 【親Excelイメージ】 a列・・・業者名 b列・・・業者電話番号 c列・・・掛かってきた時刻 1ヶ月あたりの累積で約500件(500行)ほどのデータを収集見込みです。 【子Excelイメージ】 a列・・・業者名 b列・・・業者電話番号 c列・・・時刻(関数now) そしてd列にボタンを配置させ、行数(業者数)は10行程度になります。迷惑電話が掛かってきたら、該当行のボタンを押してもらう形です。 ここで質問です。 子Excelのセルd1にあるボタンをクリックすると、セルa1~c1をコピーし、親Excelを開いて最終行を探し、値のみを貼り付けて保存して親Excelを閉じる、というところまでのマクロは作れます。困っているのが、複数のオペレーターが同時刻に操作してしまった場合のバッティングです。 例えばオペレーターAが親Excelを開いていた場合に、オペレーターBは親Excelが閉じられるのを待ってから貼り付けにいく、という感じにしたいのです。 若しくは、親Excelをブックの共有としたときに、全く同時刻にオペレーターAとオペレーターBが最終行を探しにいってもエラーにならないようにしたいのです。 どちらの方法でも構いませんので、どなたかご教授頂けると幸いです。オペレーターは100名ほどおりますので、2名同時操作どころか3名同時操作もあり得ます。これ以外にも懸念される事項があれば教えてください。

  • 必要行をコピーして増やし、データも付随させたい

    文章でうまく説明できないので、添付データを見てください。 上の図を、下の図のように変換する関数または、マクロ等教えてください。 ・エクセル2010を使用しています。 ・データは、5000行ほどあり、空欄が多く含まれています。 ・作業列(D列)は、必要な増やしたい行数です。最大は7で、データはY列まであります。  (模索している中でCOUNT関数を使い出ただけのもので、不必要なら削除できます。) ・G列、J列、M列、P列はMID関数で出た列で、不必要なら削除できます。 ・セルの色はわかりやすいように付けてあるだけで、実際のデータには色はありません。 マクロはこれから勉強の段階です。 ご教授よろしくお願いいたします(深)

  • Excelでマクロを組んで、データを繰り返し抜き出したいのですが

    Excelでマクロを組んで「データ取得→データ並び替え→データ取得・・」と繰り返す作業を自動的に行いたいと思っています。 元データ       一回目     二回目    │A│        │A│      │A│    │列│       │列│     │列│   ─┼─┼─  ──┼─┼  ──┼─┼ 1行 │k │    3行│m│   2行│d │ ──┼─┼─  ──┼─┼  ──┼─┼ 2行 │d │    5行│z │   4行│r │ ──┼─┼─  ──┼─┼  ──┼─┼ 3行 │m │    8行│e │   6行│p │ ──┼─┼─  ──┼─┼  ──┼─┼ 4行 │r │    9行│f │   7行│s │ 例えば、上記の元データのようにデータ(小文字アルファベット)を入力し、その後一回目、二回目・・・とデータの並べ替えを繰り返し、その都度上から二段目のデータのセルのデータ(この場合それぞれz、r)を取得して変数xに収めるという作業を繰り返し自動的に行うようにしたいのですが、「x=Cells(2,1)」とマクロを書くと非表示になっているセルA2のデータ(この場合d)を常に取得してしまいうまくいきません。 これはどのような方法で解決できるのでしょうか。 OSはWindows2000、ExcelはExcel2000を使っています。 よろしくお願いします。

  • スピルされたデータのフィル

    エクセルの横1行目だけに文字列の入った1000番目までデータがあり、A2のセルに「=12列目から23列目のデータをドラッグ」させてスピルさせたあと、その下に11足した「13列目から34列目のデータ」を次々に返したいのですが、どのような関数またはどのような方法を使えば良いか教えてください。

  • 不要なデータを切り取って別のシートに貼りつける

    シート1に色々なデータが並べています。A列~J列、5000行くらいです。 J列に「0」「1」「#N/A」の三つの値がバラバラに並べています。 フィルタで昇順にし、「0」「1」「#N/A」と奇麗に並べます。 「0」と「#N/A」の行を切り取ってシート2へ貼り付けます。 そして次にG列に「ダウンロード」以外の文字があった場合も同様に切り取ってシート2に貼り付ける といった作業をしています。作業が大変なので、マクロで実行したいのですが、コードの記述が分からないのです。教えて下さい。 宜しくお願いします。

  • データの一部範囲について、並替等のVBAを作りたい

    データの一部範囲について、並べ替え等のVBAを作りたい。 次のようなVBAを作りたいのですが、当方知識がほとんどないためお力を貸してください。 データの内容 A列たてに2行目「6時台」12行目「7時台」というふうに、10行くらいおきに「○時台」の文字が24時台まで入る B列~C列A列にあわせた行数の文字列が入る E列~N列関数式の入ったデータが入る、A列~C列のからデータにあわせてデータより余分に関数式が入りデータ空白はIF(B="","", )で空白扱い。 処理したい内容 まず例として11時台~12時台の範囲(11時台のセルから13時台の文字の前の行まで)についてのみ対象として E列~J列までを、たて一列にする。E1~Exその下にF1~FxというふうにJ列まで。ただし並べ順はE,G,H,F,I,Jのようになる。 この場合の「E1」とは11時台のセル行位置 次にH~N列の矩形をそのままCopy これらのデータをテキストとして作成保存 時間の範囲は、A1に入るデータの日付(Bookごとに異なる)による曜日によって異なるので 「固定式」をいくつか作ってcaseで選択を予定していますが 汎用性として、最初の時間とうしろの時間を指定する任意の範囲式も作っておきたいです。 現在は、boxで時間を入れ、検索で○時台を見つけその上に空白行を3行入れ 続いてうしろの行も時間指定により3行空白を入れ、データ(関数式)の途切れる範囲内を作り、 その場所に手動でジャンプさせ、並べ替えマクロを動作さテキスト化しています。 また矩形部分はマウスで範囲を反転させたものをCopyしてそのテキストにあとから貼り付けています。 全体を対象としたVBAはここで作成していただいたのですが、途中の一部範囲を対象としたものが必要になったためお知恵をお借りしたいと思います。 よろしくお願いします。 Windows7/Office2013

  • エクセルで、データのある行だけを抽出したい。

    エクセルのSheet1にデータが入っており、セルが空白でない行のデータのみを、Sheet2に抽出したいと思っています。 Sheet2にあらかじめ関数を入れておく方法にしたいため、関数について教えてください。 タイムテーブルで予定を管理するような表で、A~Hまでにデータが入っています。 予定を入れる際にはE列には必ず入力をするため、E列が空白でない行のみを抽出したいです。 A|B|C|D|E|F|G|H 月|日|時間|… 11|22|10:00|… 11|22|10:30|… 時間枠は10:00~17:00の30分刻みで、1日15行使用するので、1年で5475行まで使用します。 1行目はタイトル行なので、データは2行目から入力しています。 フィルタオプションで抽出する方法や、それをマクロで登録しておく方法は分かったのですが、あとから予定を追加することがあるため、マクロを実行する度にデータが置き換わると困ってしまいます。 また、抽出したSheet2のI列以降には備考などを入力したいため、やはり後から列がずれると困るため、A~H列に関数を入れておく方法で実行したいと思います。 よろしくお願いいたします。

中1国外転校と不安
このQ&Aのポイント
  • 中1で国外転校する不安について
  • お父さんはインドのスペイン大使館幹部で働いていて、お母さんは日本の田舎で小さいカフェを経営しています
  • インドと日本どちらに住むべきか、お母さんの意見も取り入れながら考えることが大切です。また、インドのスペイン大使館幹部の仕事についても詳しく知りたいです。
回答を見る

専門家に質問してみよう