- 締切済み
エクセルで、列毎に数値を入れ替えたいです。
以下のように数値を入れ替えるようにしたいのです 列ごとに 1 2 3 4 5 となっているものをボタン操作で 5 1 2 3 4 また、ボタンを押すと 4 5 1 2 3 と順に入れ替えてループさせたいのですが可能でしょうか? 又、そういった列のグループが1シートに複数あった場合は1ボタン操作が できますでしょうか? 何とぞお知恵をお貸しください。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
[No.3この回答への補足]へのコメント、 》 マクロに組み込むにはどういった、手順を踏めばいいのでしょうか? 貴方と同様に、私もマクロ音痴なので回答できません。 この程度のことは、マクロ化する必要もなさそうですが・・・
- keithin
- ベストアンサー率66% (5278/7941)
とりあえず先の回答のマクロで順繰り実行して貰えば,元のご相談のリクエストは完遂すると思います。 >A1からE2に1グループ、A5からC10に1グループ、 >J15からP20に1グループと >いった風にたくさんのグループを一度に移動させたい どのようにローテートしたいのか欲しい結果がイマイチ見えませんが,勝手に想像します。 sub macro2() range("E1:E2").cut range("A1:A2").insert shift:=xltoright range("C5:C10").cut range("A5:A10").insert shift:=xltoright range("P15:P20").cut range("J15:J20").insert shift:=xltoright end sub 先のマクロを簡単にしただけなので,実際に応用してみてください。 本件はこれにて。
お礼
ありがとうございました。 こちらの伝えたいことを組んで下さり、助かりました。 教えていただいた式の応用で、基本的な物はできあがりました。 ただ、セルの結合部分だけが 結合されたセルの一部を変更することはできません。 のエラーで実行が止まってしまいました。 何かしらの手立てがあるのでしょうか?
- keithin
- ベストアンサー率66% (5278/7941)
○数式が入っているのに移動すると問題が起きる場合があるので,生データだけ入っているとします ○色々な場所で動作させたいので,ある決まりで「どの範囲を回転したい」のか自動で判別させます Sub macro1() Dim r As Range Dim n As Double On Error Resume Next Set r = Application.Intersect(ActiveCell.CurrentRegion, ActiveCell.EntireRow) If r.Count = 1 Then Exit Sub Set r = r.SpecialCells(xlCellTypeConstants) n = r.Areas(r.Areas.Count).Count r.Areas(r.Areas.Count).Cells(n).Cut r.Cells(1).Insert Shift:=xlToRight End Sub 回転したい中のセルを1つ選んでマクロを実行します。 #空セルで作動させても誤動作しない手当てをしてあります #連続した範囲(Ctrl+Shift+:で選択される)の中で,データの入っている範囲を対象にします。 #連続した範囲に含まれた空セルも回転の対象にしますが,連続した範囲の外にあるセルは対象外なので,たとえばA:E列に連続した範囲,J:M列に別の連続範囲があるような場合でも片方だけを対象にします。 ご相談に書いてない,具体的なデータの配置の姿に合わせてマクロを書けば,もっとシンプルでスマートなマクロに出来ます。
補足
お答えいただいて、ありがとうございます。 質問の際、範囲を指定したいことが抜けておりました。 例 A1からE2に1グループ、A5からC10に1グループ、 J15からP20に1グループと いった風にたくさんのグループを一度に移動させたいのですが、 セル内は数式無しです。
補足
お答えいただき、ありがとうございます。 お礼が遅れてすいません。 教えていただいた、関数をNo.2で参考にさせてもらったマクロに 組み込むにはどういった、手順を踏めばいいのでしょうか?