下図1のように数値が並んでいる時、下図2のように自動的に整理する方法を探しています。
つまり、左の列の値と右の列の値を比較し、値のセル番地を変える方法です。
最終的には右列の値を左列のセルでくくる形の表の完成を目指しています。
マクロを使用する必要がある場合は、おおよそのソースコードを併せて回答していただけとありがたいです。
下図1
A B C
1 100 120 131
2 200 150 148
3 400 260 222
4 330 263
5 410 341
6 455
下図2
A B C
1 100 120 131
2 148
3 150 222
4 200 260 263
5 330 341
6 400 410 455
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
こんにちは!
一例です。
画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
Sub test() 'この行から
Dim i, j, M As Long
M = Cells(1, Columns.Count).End(xlToLeft).Column
Application.ScreenUpdating = False
For j = M - 1 To 1 Step -1
For i = 1 To Cells(Rows.Count, M).End(xlUp).Row
If Cells(i, j) > Cells(i, j + 1) Then
Cells(i, j).Insert (xlDown)
End If
Next i
Next j
Application.ScreenUpdating = True
End Sub 'この行まで
※ データは1行目からあるとします。
※ データ列は何列あっても構いませんが、一番右側列データ量が一番多いという前提です。
※ 同値の場合は同じ行にしています。m(_ _)m
この回答への補足
回答ありがとうございます!
実は、乗換時刻表を作成したいと思い、今回の質問をさせていただきました。
(過去にhttp://okwave.jp/qa/q7462200.htmlでも同様の質問をさせていただいたのですが、残念ながら期待通りの結果は出せませんでした。)
ですので、実際の条件は以下の通りとなります。できれば手動で作成した実物を用いて説明したいのですが、方法が分からないので、できる限り文章で説明してみます。4以降の条件は、できればで結構です。
1.13列あり、右の列のほうが短い場合がある(例:E列はE78まで、F列はF67までなど)
2.スケジュールを書き入れるための真ん中のG列を挟んで、左側が往路、右側が復路。真ん中のG列以外は2列ずつが発車時刻と到着時刻のペアになっているため(例:A列が発車時刻、B列が到着時刻)、A・B列とL・M列のバス、C・D列とJ・K列の電車、E・F列とH・I列のバスはそれぞれ同じ路線。
3.2より、比較してくくりたいのは乗り換えにあたるB・C列間、D・E列間、F・G列間、G・H列間、I・J列間、K・L列間。できれば乗り換え時間としてそれぞれ2分、3分、1分、1分、3分、2分を設けたい。
これ以降は煩雑なため、できればで結構です。
4.一つ手前の駅から乗ることもあるため、A列より左側に、C列の配置(セル番地)に対応する列を作り、M列より右側に、K列の配置に対応する列を作りたい。
5.すぐ右の列の始発や終電との間にタイムラグがある時、とんぼ帰りをした場合の復路の発車時刻にあわせて配置したい(例:DEの電車は5時台始発、FGのバスは8時台始発といった場合、Eのうちすぐに乗り換えられない早い時間帯部分は帰路であるJの時刻にあわせる。乗り換え時間は上記同様3分で構わない)。
6.http://okwave.jp/qa/q7462200.htmlの2のように自動でレイアウトを整えたい。
よろしくお願いします。
No.1
- 回答日時:
「くくり」の条件が不明瞭(あいまい)なので、数列によっては意図しない結果になることも考えられます。
手順:
ALT+F11を押す
現れた画面で挿入メニューから標準モジュールを挿入する
現れたシートに下記をコピー貼り付ける
sub macro1()
dim c as long
dim r as long
for c = 2 to 1 step -1
r = 1
do
do until cells(r, c) <= cells(r, c + 1)
cells(r, c).insert shift:=xlshiftdown
cells(r, c).formular1c1 = "=R[1]C"
r = r + 1
loop
r = r + 1
loop while cells(r, c) <> ""
next c
on error resume next
range("A:B").specialcells(xlcelltypeformulas).clearcontents
end sub
ABC列に数列を入れ、マクロを実行する。
この回答への補足
お早い回答ありがとうございます!
>「くくり」の条件が不明瞭(あいまい)なので、数列によっては意図しない結果になることも考えられます。
いえいえ、期待していた動きをしてくれました! 最終的に必要な条件については後述させていただきます。
実は、乗換時刻表を作成したいと思い、今回の質問をさせていただきました。
(過去にhttp://okwave.jp/qa/q7462200.htmlでも同様の質問をさせていただいたのですが、残念ながら期待通りの結果は出せませんでした。)
ですので、実際の条件は以下の通りとなります。できれば手動で作成した実物を用いて説明したいのですが、方法が分からないので、できる限り文章で説明してみます。4以降の条件は、できればで結構です。
1.13列あり、右の列のほうが短い場合がある(例:E列はE78まで、F列はF67までなど)
2.スケジュールを書き入れるための真ん中のG列を挟んで、左側が往路、右側が復路。真ん中のG列以外は2列ずつが発車時刻と到着時刻のペアになっているため(例:A列が発車時刻、B列が到着時刻)、A・B列とL・M列のバス、C・D列とJ・K列の電車、E・F列とH・I列のバスはそれぞれ同じ路線。
3.2より、比較してくくりたいのは乗り換えにあたるB・C列間、D・E列間、F・G列間、G・H列間、I・J列間、K・L列間。できれば乗り換え時間としてそれぞれ2分、3分、1分、1分、3分、2分を設けたい。
これ以降は煩雑なため、できればで結構です。
4.一つ手前の駅から乗ることもあるため、A列より左側に、C列の配置(セル番地)に対応する列を作り、M列より右側に、K列の配置に対応する列を作りたい。
5.すぐ右の列の始発や終電との間にタイムラグがある時、とんぼ帰りをした場合の復路の発車時刻にあわせて配置したい(例:DEの電車は5時台始発、FGのバスは8時台始発といった場合、Eのうちすぐに乗り換えられない早い時間帯部分は帰路であるJの時刻にあわせる。乗り換え時間は上記同様3分で構わない)。
6.http://okwave.jp/qa/q7462200.htmlの2のように自動でレイアウトを整えたい。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
彼女のことが好きすぎて彼女の...
-
白血球が多いとどんな心配があ...
-
EXCELで条件付き書式で空白セル...
-
エクセル指定した範囲からラン...
-
勃起する時って痛いんですか? ...
-
イタリアから帰国する際、肉製...
-
検便についてです。 便は取れた...
-
エクセルで数式の答えを数値と...
-
風俗店へ行く前のご飯
-
ある範囲のセルから任意の値を...
-
甲状腺が腫れているが血液検査...
-
2つの数値のうち、数値が小さい...
-
エクセルのラベルの値(文字列...
-
VLOOKUP関数を使用時、検索する...
-
リンク先のファイルを開かなく...
-
これって喉仏ですか? 私は女性...
-
WORDで複数語句を検索するには
-
小数点第一位が0のとき、切り...
-
一番多く表示のある値(文字列...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
彼女のことが好きすぎて彼女の...
-
白血球が多いとどんな心配があ...
-
勃起する時って痛いんですか? ...
-
精子が黄色?
-
検便についてです。 便は取れた...
-
これって喉仏ですか? 私は女性...
-
小数点以下を繰り上げたものを...
-
甲状腺が腫れているが血液検査...
-
精液の落とし方を教えてください
-
エクセル指定した範囲からラン...
-
EXCELで条件付き書式で空白セル...
-
2つの数値のうち、数値が小さい...
-
精子に血が・・・
-
エクセルのラベルの値(文字列...
-
イタリアから帰国する際、肉製...
-
ある範囲のセルから任意の値を...
-
リンク先のファイルを開かなく...
-
中出しをするとお腹が痛い・・・。
-
MIN関数で空白セルを無視したい...
おすすめ情報