プロが教える店舗&オフィスのセキュリティ対策術

初めて質問させて頂きます。
excelで困っていることがあり質問させて頂きました。
excel シートに入力されている内容を左右対照入れ替えしたいのです。

簡単に書きますと、
A1 に 数字の1
B1 に 数字の2
C1 に 数字の3
D1 に 計算式 =A1+ B1 + C1

と入力してあるファイルがあったとして、それを

A1 に 計算式 =A1+ B1 + C1
B1 に 数字の3
C1 に 数字の2
D1 に 数字の1

と左右対称に入れ替えたいのです。
なんらかの方法は無いでしょうか?
宜しくお願い致します。

A 回答 (7件)

# 半分冗談ですが、こんなこともできますので、ご紹介。



[ツール]-[オプション]-[インターナショナル]の
[現在のシートを右から左に表示する]をON。
    • good
    • 4
この回答へのお礼

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

お礼日時:2008/11/23 13:07

#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!という参照が付いてうるさいので、仕方なく取り除いています。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/11/22 14:49

計算式があると、参照範囲がおかしくなりますが、


並び替えを使って一気に入れ替える方法もあります。

A2~D2に1~4の数字を入力
(データが多い時はオートフィルやcolumn関数が便利)
A1~D2の範囲を選択しておいて、
データ、並び替えから、オプションで列単位に指定して、
行2を降順で並びかえれば一気に左右逆になります。
(数式はエラーになります)

この例では並び替えの前にD1~D2を切り取ってA1~A2に挿入してから
並び替えをすれば正しくなりますが、
実際にどの程度の数式が含まれているデータを処理するかで、
並び替え後がおかしくなるかが変わってきます。

数式が狂う事が前提で、参考になればと思います。
完璧に入れ替えるなら、他の方が言っているようにVBAしかないでしょう。
    • good
    • 1
この回答へのお礼

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

お礼日時:2008/11/22 12:12

どれぐらいの広がりを持った問題によりますが、


(例えば式を移すのは関数では出来ないのをご存知か?)
セルの値だけなら
1236
6321
第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
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/11/22 12:09

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 に変更されます。
    • good
    • 0
この回答へのお礼

koko88okok さん
回答有難うございます。

ありがとうございました。

お礼日時:2008/11/22 12:07

列丸ごと移動すれば良いのではないでしょうか。


数式は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
となります。ご参考まで。
    • good
    • 1
この回答へのお礼

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

お礼日時:2008/11/22 11:58

もっとも単純な方法は、


A1からD1を右一旦別な場所に移動します。
あとはA1だったセルをD1に、B1だったセルをC1に・・・・・・
とそれぞれ移動してやればできます。
    • good
    • 1
この回答へのお礼

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

お礼日時:2008/11/22 12:01

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