解決済み

excel 左右対照入れ替え

  • 困ってます
  • 質問No.4498028
  • 閲覧数5385
  • ありがとう数8
  • 気になる数0
  • 回答数7
  • コメント数0

お礼率 100% (8/8)

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

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

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

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

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

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

  • 回答No.6

ベストアンサー率 59% (574/965)

#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!という参照が付いてうるさいので、仕方なく取り除いています。
お礼コメント
yusaku_goo

お礼率 100% (8/8)

mitarashi さん
回答有難うございます。
ご親切に考えていただき感謝致します。
助かります、ありがとうございました。
投稿日時 - 2008-11-22 14:49:50

その他の回答 (全6件)

  • 回答No.7

ベストアンサー率 52% (257/491)

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

[ツール]-[オプション]-[インターナショナル]の
[現在のシートを右から左に表示する]をON。
お礼コメント
yusaku_goo

お礼率 100% (8/8)

shikisaito さん
回答有難うございます。
面白い方法ですね、ありがとうございました。
投稿日時 - 2008-11-23 13:07:18
  • 回答No.5

ベストアンサー率 52% (20/38)

計算式があると、参照範囲がおかしくなりますが、
並び替えを使って一気に入れ替える方法もあります。

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

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

数式が狂う事が前提で、参考になればと思います。
完璧に入れ替えるなら、他の方が言っているようにVBAしかないでしょう。
お礼コメント
yusaku_goo

お礼率 100% (8/8)

abe_onesel さん
回答有難うございます。
参考になります、ありがとうございました。
投稿日時 - 2008-11-22 12:12:01
  • 回答No.4

ベストアンサー率 28% (4466/15871)

他カテゴリのカテゴリマスター
どれぐらいの広がりを持った問題によりますが、
(例えば式を移すのは関数では出来ないのをご存知か?)
セルの値だけなら
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
お礼コメント
yusaku_goo

お礼率 100% (8/8)

imogasi さん
回答有難うございます。
マクロ参考にさせて頂きます。
ありがとうございました。
投稿日時 - 2008-11-22 12:09:43
  • 回答No.3

ベストアンサー率 58% (3839/6543)

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 に変更されます。
お礼コメント
yusaku_goo

お礼率 100% (8/8)

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

ありがとうございました。
投稿日時 - 2008-11-22 12:07:37
  • 回答No.2

ベストアンサー率 59% (574/965)

列丸ごと移動すれば良いのではないでしょうか。
数式は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
となります。ご参考まで。
お礼コメント
yusaku_goo

お礼率 100% (8/8)

mitarashi さん
回答有難うございます。
マクロ参考にさせてください、実際は横軸にかなりの量の入力が
あるシートの変換をしたいので地道にやっています。
ありがとうございました。
投稿日時 - 2008-11-22 11:58:34
  • 回答No.1

ベストアンサー率 55% (246/445)

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

お礼率 100% (8/8)

B_oneさん
回答有難うございます。
実際は横軸にかなりの量の入力があるシートの変換をしたいので
地道にやっていきます。
ありがとうございました。
投稿日時 - 2008-11-22 12:01:15
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


OKWAVE若者応援スペシャル企画

ピックアップ

ページ先頭へ