• ベストアンサー

VBAでB列とD列を入れ替える

VBAでA列に入力されてるをD列にしたりB列をE列に・・・など入れ替えたいのですが どういう方法をとればいいのでしょうか。 両方空白じゃないのでコピー貼りつけだとできないです。

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

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

値だけで良いなら Sub Sample1()   Dim vData1   Dim vData2   vData1 = Columns("B")   vData2 = Columns("D")   Columns("B") = vData2   Columns("D") = vData1 End Sub 式や書式も入れ替えたいなら Sub Sample2()   Columns("B").Cut   Columns("D").Insert Shift:=xlToRight   Columns("D").Cut   Columns("B").Insert Shift:=xlToRight End Sub こんな感じかな

その他の回答 (1)

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.1

D列を切り取ってB列に挿入して1行ずらしたあと、 元B列のC列を切り取ってD列に挿入すればいいだけでは? ・・・手作業でもできる話ですよね。

関連するQ&A

  • エクセルでA列、B列、C列、D列、E列に数値が入力されており、それぞれ

    エクセルでA列、B列、C列、D列、E列に数値が入力されており、それぞれの数値が重複しないように合計数値を計算したいのですが、何か良い方法は無いでしょうか? 例 A B C D E 1 5 12 6 13 13 2 7 13 7 14 14 3 16 8 20 5+12+6+13+13=49 5+12+7+13+13=50 よろしくお願いします

  • これからA列に「○」を入力したら、隣接するB列に「○」が入るようにしたい

    A列、B列があります。 各列ともランダム「○」が入っています。 今の状態としては A列のみ○ B列のみ○ 両方なし 両方あり この状態から これからはA列に「○」を入力したら、 隣接するB列に「○」が入るようにしたいです。 私が思いついた方法は B1列に「=$A1」を入力して下までドラックしたんですが ・一番下に新たに行を追加した時、またドッラクしなきゃいけない。 ・A列が空白の時のB列が「0」になってしまうし、B列に入力されている「○」も「0」になってしまう。 が回避出来ません。 どなたかお知恵をおかしください。 よろしくお願い致します。

  • VBAの構文で教えてください

    VBAの繰り返し処理 Do Until ~について教えてください。 シートの行列を全て書いてしまうと長くなるので 少し省略させていただきます。    A  B  C  D 1 2008 1 ○ 2008 2 2008 2 × 2008 このような羅列がデータ検索の際に何行になるかわからない状態のデータがあります。 C 列はBが1の場合○、2の場合は× D 列はAが数字があればそのままコピーするようにくみました。 ここで教えていただきたいのが、現在私はCとDの構文は AまたはBに数字があればC,Dに反映するという構文ではなく C、Dの列の最後まで全て数式を入力する構文にしています。 なので、A,Bに入力があってもなくても数式が飛ぶような構文になっています。 そこで、DO Until ~ を使用し A列が空白になるまで処理を繰り返すとすればいいのかなとおもうのですが、 Dim n as integer n=1 Do Until Sheets("sheet1").Cells(n, 1) = "" 空白までという構文(正しいかはわかりませんが)で行き詰っています。 これ以降のAが空白ならDに貼り付ける、 B列も同様に空白まで検索し○または×に置き換えるとは どのうように組み立てたらいいのでしょうか? また、申し訳ないのですが Cが×ならその列の背景を色づける(今回の場合なら2の列) とことまでしてみたいのですが・・・ このようなことが可能であれば教えていただければと思います。 VBAははじめたばかりで不勉強な点も多々ありますがよろしくお願いします。

  • 【excel2003 vba】指定した文字列が入力されている「セル範囲」の表示方法?

    ◎Sheet1  A B C D E 1○○○-- 2○○○×× 3---×× 4×○--- ※「-」は空白 上記のようにセルに「○」「×」が入力されている「Sheet1」シートがあります。(例として○×の2種類を使っていますが、本当はもっとたくさんの種類の文字列があります。) vbaを使って、以下の一覧表を「List」シートに作成するコードを作成できませんでしょうか? ◎List  A     B 1○     ×  '文字列の種類 2A1:C2  D2:E3 '文字列の範囲  3B4     A4  '同上 【ToDo】 (1)1行目に文字列(○、×)を入力する (2)1行目に入力してある文字列が入力されているすべての「セル範囲」を2行目以降の各列に抽出する。 **1セル内に「○」「×」の両方が入力されているものもある。**  ⇒例えば、A1セルに「○×」と入力されていたら、「Rist」シートのA列B列の両方に「A1」が抽出されるようにしたい。 1セルごとのセル番地(○:A1,A2,B1,…)を一覧化することはできるのですが、同じ文字列をまとめた「範囲」の抽出ができないのです。 どなたかお力添えをお願いできませんでしょうか? 宜しくお願い致します。

  • Excel VBA B列を検索して1行下をコピぺ

    はじめまして。 VBAを始めたばかりですが、自分ではどうにもならないので、教えていただければと思い、初めて質問致します。 A1~G1、1行目から1000行目まで各セルに数字がランダムに1つずつ入っているデーターSheet1があり、コマンドボタンを押すことによってMsgBoxに入力した数字をB列を下に検索していき、例えば、数字の8が入力されたら、B1から下にB列に8が出現したらそのセルの1つ下の行(A列~G列まで)をコピーしてSheet2に抽出したいと考えているのですが、なかなか出来ず、困っています。 イメージとして A B C D E F G H I 1 5 14 30 25 30 3 9 2 22 34 6 7 29 49 3 3 1 8 20 4 10 6 45 4 30 15 34 50 2 5 9 5 11 8 45 7 6 20 1 6 40 8 48 25 36 4 10 7 21 22 30 28 6 7 36 8 2 3 50 2 1 43 6 と、データがSheet1に仮にあって、8が入力されたなら4行目の 30 15 34 50 2 5 9 と 6行目 40 8 48 25 36 4 10、7行目 21 22 30 28 6 7 36という様に抽出されてSheet2に 上から順に貼り付けられる様にしたいので、皆様の御知恵をお貸しいただければと 思っております。かなり複雑かとは思いますが、どうか宜しくお願いいたします。 FINDやOFFSET、IF文、ループ等を使ってみましたが私のレベルでは全く話になりませんでした。 まだVBAかけだしなもので、なるべ簡単なくプログラムでお願いいたします。

  • エクセルVBA及び関数

    初心者です。お教えお願いします エクセル2003です 空白行及び0をなくしたいのですが(C列を入力された時点で自動でE列のようにしたい) 関数の場合及びVBAのシートコードを両方教えていただけないでしょうか VBAのコードは勉強の為です Sheet1    A    B     C     D     E     F 16          文字A        文字A 17          文字B        文字B 18            0         文字C 19          文字C        文字D 20            0         文字E 21          文字D        文字F      22      23          文字E 24 25          文字F 文字はC16~C80まで入っております B16~E80までのセルのみで行いたいのですが 他の場所は関数やグラフ等がすでに入ってますのでいじりたくありません E16~をフォームのコンボボックスのリストにしようと思ってます よろしくお願いましす

  • B列とC列のいずれかに文字が入力されています。

    B列とC列のいずれかに文字が入力されています。 B列とC列同時に入力されていることはなく、B列とC列とも空白のこともあります。 この時、A列にB列、C列の文字をコピーするためにはA列にどのような関数を用いればよいですか。 A  B  C あ    あ い い           う    う といった具合です。 

  • EXCEL A列の値を受けてB列に出力するロジック

    A列の値を受けて、B列に出力するVBAを組みたいと考えています。 ロジックが思いつきませんので、お助け下さい。 A列に一の位が必ず1の数字が入っています。 それをB列に1~10まで展開します。 それが終われば、A列の次の値をB列に入力、 同じように、B列に1~10まで展開します。 それをA列の最後の値まで繰り返します。 最終的にはA列に入力されている個数の10倍の個数がB列に出力されることになります、 以上の処理です。 A   B    C   D   E   F   G 1   31   31 2   61   32 3   81   33 4   11   34 5   ・   35 6   ・   36 7   ・   37 8   ・   38 9   ・   39 10   ・   40 11   ・   61 12   ・   62 13   ・   63 A列の値の個数は多いので、できるだけ早く動作するような処理方法がわかればと思います。 よろしくお願いします。

  • スイマセン!【再投稿】 これからA列に「○」を入力したら、隣接するB列に「○」が入るようにしたい

    A列、B列があります。 各列ともランダム「○」(マル)が入っています。 今の状態としては A列のみ○ B列のみ○ 両方なし 両方あり この状態から これからはA列に「○」を入力したら、 隣接するB列に「○」が入るようにしたいです。 私が思いついた方法は B1列に「=$A1」を入力して下までドラックしたんですが ・一番下に新たに行を追加した時、またドッラクしなきゃいけない。 ・A列が空白の時のB列が「ゼロ」になってしまうし、B列に入力されている「○」も「ゼロ」になってしまう。 (「ゼロ」は半角数字の「ゼロ」なんですが、先程投稿した時にマルとゼロが一緒になってしまったので再投稿しました。) が回避出来ません。 どなたかお知恵をおかしください。 よろしくお願い致します。

  • VBA

    エクセルVBAについて教えてください。 シート1 A列   B列   C列   D列   E列    F列 ・・・            商品A  商品B  商品C  商品D・・・ 日付  名前(1)   3           2     1 日付  名前(2)         1     3  ・     ・     ・     ・     ・    ・  ・     ・     ・     ・     ・    ・  ・     ・     ・     ・     ・    ・ シート2 A列   B列    C列    D列    E列 日付  名前(1)   商品A   3               商品C    2               商品D    1 日付  名前(2)   商品B    1               商品C    3 ・      ・      ・      ・  ・      ・      ・      ・ ・      ・      ・      ・      上記のような、エクセルで作ったシート1があります。 これを、シート2のようにコピーしたいと思っています。 商品は20列あり、数字が入っている列と入っていない列があります。 数字が入っている列の商品と数字をコピーして、すべてコピーが 終わったら次の行のコピーしていく。 行は100ほどあります。 よろしくお願いします。

専門家に質問してみよう