• ベストアンサー
  • 困ってます

excel 左右対照入れ替え

初めて質問させて頂きます。 excelで困っていることがあり質問させて頂きました。 excel シートに入力されている内容を左右対照入れ替えしたいのです。 簡単に書きますと、 A1 に 数字の1 B1 に 数字の2 C1 に 数字の3 D1 に 計算式 =A1+ B1 + C1 と入力してあるファイルがあったとして、それを A1 に 計算式 =A1+ B1 + C1 B1 に 数字の3 C1 に 数字の2 D1 に 数字の1 と左右対称に入れ替えたいのです。 なんらかの方法は無いでしょうか? 宜しくお願い致します。

共感・応援の気持ちを伝えよう!

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

  • ベストアンサー
  • 回答No.6

#2です。試しに汎用化してみました。自分で使うシチュエイションは思い浮かびませんが... Sub test() Dim i As Long Const mirrorColumnsNo As Long = 4 ActiveSheet.Columns(1).Resize(, mirrorColumnsNo).Cut Destination:=Sheets(2).Columns(1).Resize(, mirrorColumnsNo) For i = 1 To mirrorColumnsNo Sheets(2).Columns(i).Cut Destination:=ActiveSheet.Columns(mirrorColumnsNo - i + 1) Next i ActiveSheet.Columns(1).Resize(, mirrorColumnsNo).Replace What:=ActiveSheet.Name & "!", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False End Sub 最後は、Sheet1にある式に、Sheet1!という参照が付いてうるさいので、仕方なく取り除いています。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

mitarashi さん 回答有難うございます。 ご親切に考えていただき感謝致します。 助かります、ありがとうございました。

その他の回答 (6)

  • 回答No.7

# 半分冗談ですが、こんなこともできますので、ご紹介。 [ツール]-[オプション]-[インターナショナル]の [現在のシートを右から左に表示する]をON。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

shikisaito さん 回答有難うございます。 面白い方法ですね、ありがとうございました。

  • 回答No.5

計算式があると、参照範囲がおかしくなりますが、 並び替えを使って一気に入れ替える方法もあります。 A2~D2に1~4の数字を入力 (データが多い時はオートフィルやcolumn関数が便利) A1~D2の範囲を選択しておいて、 データ、並び替えから、オプションで列単位に指定して、 行2を降順で並びかえれば一気に左右逆になります。 (数式はエラーになります) この例では並び替えの前にD1~D2を切り取ってA1~A2に挿入してから 並び替えをすれば正しくなりますが、 実際にどの程度の数式が含まれているデータを処理するかで、 並び替え後がおかしくなるかが変わってきます。 数式が狂う事が前提で、参考になればと思います。 完璧に入れ替えるなら、他の方が言っているようにVBAしかないでしょう。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

abe_onesel さん 回答有難うございます。 参考になります、ありがとうございました。

  • 回答No.4
  • imogasi
  • ベストアンサー率27% (4708/16926)

どれぐらいの広がりを持った問題によりますが、 (例えば式を移すのは関数では出来ないのをご存知か?) セルの値だけなら 1 2 3 6 6 3 2 1 第2行のA2に =INDEX($A$1:$D$1,1,5-COLUMN()) と入れて、秘儀右方向に式を複写。 ーー セルの式まで移すなら、VBAで無いと出来ません。 第3行目に出す例 Sub test01() r = Range("IV1").End(xlToLeft).Column For i = 1 To r Cells(3, r + 1 - i) = Cells(1, i) '3が第3行目を指定部分 If Cells(1, i).HasFormula Then Cells(3, r + 1 - i).Formula = Cells(1, i).Formula End If Next i End Sub

共感・感謝の気持ちを伝えよう!

質問者からのお礼

imogasi さん 回答有難うございます。 マクロ参考にさせて頂きます。 ありがとうございました。

  • 回答No.3

1) A,B,C列を選択して、右クリックから「挿入」で、A,B,C列が挿入されます。 2) 移動した、G列を選択して、A列にD&D。 3) F列を選択して、B列にD&D。 4) E列を選択して、C列にD&D。 以上で、数式は自動的に =D1+C1+B1 に変更されます。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

koko88okok さん 回答有難うございます。 ありがとうございました。

  • 回答No.2

列丸ごと移動すれば良いのではないでしょうか。 数式はExcelが調整してくれます。 >A1 に 計算式 =A1+ B1 + C1 では循環してしまいますので、 =D1+C1+B1 等ですね。 操作をマクロの自動記録をすると Sub Macro1() Columns("A:A").Select Selection.Cut Destination:=Columns("E:E") Columns("D:D").Select Selection.Cut Destination:=Columns("A:A") Columns("B:B").Select Selection.Cut Destination:=Columns("D:D") Columns("B:B").Select Selection.Delete Shift:=xlToLeft End Sub となります。ご参考まで。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

mitarashi さん 回答有難うございます。 マクロ参考にさせてください、実際は横軸にかなりの量の入力が あるシートの変換をしたいので地道にやっています。 ありがとうございました。

  • 回答No.1
  • B_one
  • ベストアンサー率55% (246/445)

もっとも単純な方法は、 A1からD1を右一旦別な場所に移動します。 あとはA1だったセルをD1に、B1だったセルをC1に・・・・・・ とそれぞれ移動してやればできます。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

B_oneさん 回答有難うございます。 実際は横軸にかなりの量の入力があるシートの変換をしたいので 地道にやっていきます。 ありがとうございました。

関連するQ&A

  • エクセルの数式をどのように入れたら良いでしょうか?

    エクセルの数式をどのように入れたら良いでしょうか? いつもこちらでお世話になっています。 今回も教えて頂きたく質問させていただきます エクセルについてですが、 sheet1に入っているデータを sheet2に入力するようにしたいのですが sheet1の A列に1~50までのNo. →A1セルにNo.1、A50セルにNo.50 B列に(1)データ C列に(2)データ があり sheet2の D5のセルに「1」と入力すれば、sheet1!A列の数字とリンクしてsheet!B1の(1)データが入り D6のセルに「10」と入力すれば、Sheet1!A列の数字とリンクしてsheet!C10の(2)データが入る ように設定し、 さらにsheet2のD5,D6のセルに上書きで(繰り返し)数字を入力させ 数式が消えないようにしたいのですが どのようにすればよいでしょうか? 分かりずらい説明で申し訳ありませんが 大変困っているので、アドバイス頂けると助かります。

  • EXCEL 関数をふくむ行列の入れ替え

    いまSheet1に3列*2行で A1+A10 B1+B10 C1+C10 A2+A11 B2+B11 C2+C11 といった関数が入っているとして、 別のシートに、この関数から導き出される値の行列を入れ替えた状態で表示したいのですが、どういった方法があるのでしょうか? ちなみに値だけを行列の入れ替えをしたいのではなく、関数を活かしたまま行列を入れ替えたいのですが、一般的な「形式を選択して貼り付け」で行列の入れ替えにチェックをいれても、エラーが返ってきてしまいうまくいきません。 さらに、その別のシート上でSUMなどの関数で縦・横・の集計など計算をしたいのですが・・・ いい方法があったら教えてください。

  • エクセル

    エクセルの式を教えてください A1=5%として B1=100 C1=B1*A1 D1=C1*A1.....として 表を作成したいと思っています A1は数字の入れ替えができるよう固定したいのですが 数式がわかりません どなたか教えていただけないでしょうか よろしくお願いいたします。

  • エクセルについて

    エクセルについて質問です。 エクセルで「130」という数字を A 200 B 180 C 150 D 100 の中から一番近い数字を選択するときに使う関数を教えて欲しいです。 できれば計算式もお願いします。

  • エクセルについて

    エクセルについて、お知恵をお貸し下さい。 シート1に    A   B    C   D 1 2  45 3 4      @       42.3 5  と書いてあります。 シート2には    A   B    C   D 1      0°    45°  90° 2  20   3 30   4  40        4.2   5  50 と書いてあり、シート1の@のセルに、 シート1のA列の数字を、シート2の1行を参照し、合致した数字 シート1のD列の数字を、シート2のA列を参照し、四捨五入して合致した数字 が交わる数字(4.2)を返す式をお教えいただけましたら幸いです。 宜しくお願いします。

  • エクセル2000で教えて下さい。

    エクセル2000で質問です シート1のA列に日付が入っています。 B列に東京、大阪・・・数種類の文字が入ります。 C列に数字が入力されています。 日々それぞれ入力されていく形になっています。 さらにシート2のA列に日付が入っています。 B列には予めすべて大阪と入力されています。 C列には数字が入るようになっているのですが 例えばシート1のセルA3に10月18日と入ってB3に大阪と入った時には C3に入った数字と同じ数字がシート2のC3に入力されるようにしたいのです。 シート2のC3と言うのはA3にシート1のA3と同じ日付が入って いるから隣のC3に入る形です。 上の場合もしA8に10月18日と入っていればC8にシート1のC3と 同じ数字が入るようにしたいのです。 シート1のB列に大阪以外の文字が入った場合は無視です。 大阪と入った場合のみです。 どなたか御教授下さい。 補足が必要なら申し付け下さい。

  • Excelの入力

    Excelシート A1 A2 A3 A4 A5 のそれぞれに、10を入力したらB1に、20を入力したらB2に、30を入力したらB3に、40を入力したらB4に 1 を表示する・・・  この様な計算式を教えて下さい。 尚、A1 A2 A3 A4 A5に入力する数字は、10 20 30 40 50 60 70のいずれかとなりますが、同じ数字が入力される場合もありますが、違う数字が入力される場合もあります。 質問の内容が不十分かも知れませんが、宜しくお願い致します。

  • エクセルについて

    エクセルでA1に100でB1に120でC1に100でD1に100でこの4つの数字を全部たして4で割る計算で平均がでますが、エクセルではどのような計算しきでできますか

  • Excelの関数(複数の条件分岐)

    Excelの関数についてどうしても上手くできずに、教えてください。 A,、B、C、Dの4種類のカテゴリがある場合に、以下の形で数字を入力したいのです。 Aならa*12(計算式)、 Bならb*12(計算式)、 Cならc*12(計算式)、 AでもBでCでもない場合は、d*12(計算式) 2時間くらい奮闘してますが、どうじてもできません(泣)教えてくださいませ。

  • エクセルでシート1の内容を他のシートに個々に反映させる方法

    エクセルでシート1には、氏名・氏名がA2~B11に10件入力されたリストがあります。 次に、 シート2のC2にはシート1のA2、D2にはシート1のB2の内容、 シート3のC2にはシート1のA3、D2にはシート1のB3の内容、       :            : シート11のC2にはシート1のA11、D2にはシート1のB11の内容が反映される様に、シート2~11を作成したいのです。 シート2からシート11のC2、D2に一つずつ計算式を入力せずに、もっと早急に作成する方法を教えて下さい。 宜しくお願いします。