• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel2007で右列の値を左列でくくる方法)

Excel2007で右列の値を左列でくくる方法

このQ&Aのポイント
  • Excel2007で右列の値を左列でくくる方法について探しています。
  • 数値が並んでいる場合、右列の値を左列に移動させて整理する方法を知りたいです。
  • マクロを使用する場合は、ソースコードも併せて教えていただけると助かります。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答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

kumoyama
質問者

お礼

回答ありがとうございました!

kumoyama
質問者

補足

回答ありがとうございます! 実は、乗換時刻表を作成したいと思い、今回の質問をさせていただきました。 (過去に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のように自動でレイアウトを整えたい。 よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答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列に数列を入れ、マクロを実行する。

kumoyama
質問者

お礼

回答ありがとうございました。そろそろ締め切りたいと思います。

kumoyama
質問者

補足

お早い回答ありがとうございます! >「くくり」の条件が不明瞭(あいまい)なので、数列によっては意図しない結果になることも考えられます。 いえいえ、期待していた動きをしてくれました! 最終的に必要な条件については後述させていただきます。 実は、乗換時刻表を作成したいと思い、今回の質問をさせていただきました。 (過去に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

  • Excelで乱数によって出た値を相関図に記録していく方法ってありますか?

    Excelの乱数によって表示された値を再計算(F9キー)を押した分だけ記録していく方法はあるでしょうか? 出た値をグラフ(相関図)に記し、残していきたいのです。 しかも、マクロを使わずにできるだけ簡単にやることができれば良いのですが・・・。 例えば、 A1~A2⇒ =RAND() と入力し、次にB列をx座標、C列をY座標として 再計算(F9キー)を押す(1回目)と、 B1⇒ A1セル番地の値 C1⇒ A2セル番地の値 が出て、グラフ(相関図)に1点目が記される。 また再計算(F9キー)を押す(2回目)と、 B2⇒ A1セル番地の値 C2⇒ A2セル番地の値 が出て、グラフ(相関図)に2点目が記される。 また再計算(F9キー)を押す(3回目)と、 B3⇒ A1セル番地の値 C3⇒ A2セル番地の値 が出て、グラフ(相関図)に3点目が記される。 ・・・(以下同様に) 再計算(F9キー)を押すたびにグラフ(相関図)に点が記され、過去に記された点(値)も残るようにしたいわけです。 どうかよろしくお願いします。

  • Eecelで指定されたセル番地に入力される方法を教えてください

      A  B  C  D  E 1    A1  1 2    A2  2 3    A3  3 4    A4  4 上記のようなシートがあったとします。 B列にセル番地が入力されており、C列には数値が入力されています。 A1にC1の値=1 A2にC2の値=2 という具合に、 B列に入力されているセル番地に隣のC列の値が入力されるようにしたいのですが、どうもうまくいきません。 いい方法があったら教えてください。よろしくお願いします。 ※できれば関数で何とかしたいと思っています。 OS:Windows XP Excel2003です。

  • 【Excel】2つの値のどちらかを抽出する

    A、Bのセルがあり、どちらのセルにも文字列が入っていたり、入っていなかったりとします。 そこでセルCに、A、Bどちらかの文字列を入れたいと考えたとき、どのような関数が考えられますでしょうか? 条件は以下のようにします。 (1)A,Bとも文字列か、空白のどちらか (2)Aの方が優先される。A,Bのどちらも値が入っている場合はA、Aが空白で、Bに値が入っている場合はBの値がCに反映される。 宜しくお願い致します。

  • 【Excel】条件を満たした最下行の値を表示

    こんにちは。 Excel2013を使用しています。 《Sheet1》    A     B     C    ・・・・・・    N 1  1234   ○    01/01          2,000 2  1234   ○    01/30          5,000 3  2345   △    01/05          1,000 4  3456   □    01/20          3,000 5  3456   □    01/25          4,000 6  1234   ○    02/10          6,000 7  3456   □    02/15          5,000 上記のような表がSheet1にある場合、A列が1234(数値)である最下行のN列の値をSheet2のA1セルに表示させたいのですが、関数で可能でしょうか? この場合はSheet2のA1セルに表示される値は6,000、同様にA列が2345(数値)である最下行のN列の値の場合は1,000です。 よろしくお願いします。

  • B列のセルにある文字が出た時A列のセルの値を変える

    B列のセルにある文字が出てきたときA列のセルの値を変える式、マクロを教えて下さい  A列のセルの値のリストは最初から決まっていてB列のセルに出てくるある文字と同じ数あります。

  • Excelの値を%で表示する方法

    「Maicrosoft Excel 2003」についお聞きしたいのですが...。 まず、下のような値が入っていた場合、例えばA1番地のセルの値が全体(A列の全ての値)の何パーセントかをB列に表示させたいのですが...。 よろしくお願いします。     A        B      1   25 2   31 3    8 4   11 5    4 6   23 7    8 8    2 9    7 10    5 11   16

  • Excel2000 エクセル 範囲内で条件を満たす最小の列を返す方法

    Excel2000 エクセル 範囲内で条件を満たす最小の列を返す方法 Excelで関数を使って「ある範囲内で条件を満たす最小の列を返す」 というセルの作成方法を教えていただけませんか? 例えばA1からJ1の1行に 0 0 0 1 2 1 3 6 0 0 という数値が入力されているとします。 この10個のセルを左から順に「セル内の値>0となる」という条件に合うか調べた場合、 何列目に条件を初めて満たす事ができるかを返すセルを作りたいのです。 この場合「セル内の値>0」の条件を満たす最小の列のセルは、 「1>0」となるセルD1となり、左から4列目なので 「4」 を返したい。 出来れば「ある範囲内で条件を満たす最大の列を返すセル」の作成法も教えていただけませんか? (1)の例の場合「セル内の数値>0」の条件を満たす最大の列のセルは、 「6>0」となるセルH1となり、左から8列目なので「8」を返すようなセルを作りたい。 複数のシートにデータがあり、それらのシートに一括でこのセルを作りたいため、 補助となる行を入れるのはよいのですが、 行列を入れ替えるような操作がいらない方法が知りたいです。 どうかよろしくお願いします。

  • 【Excel】複数ある特定の値を検査値として、同一行の特定列の値を返す方法を教えてください

    はじめまして。 表現の仕方がわからなかったのですが、 複数ある特定の値を検査値として、同一行の特定列の値を返す方法 わかる方いらっしゃいましたら教えてくださいm(__)m 例えば・・・ 【シート1】      【シート2】   A  B C D        A B C 1 あ 月 ア 一     1 う エ   2 う 火 エ 二     2 え イ 3 い 木 ウ 三     3 4 え 火 イ 四     4 とあった場合、 【シート1】のB列の”火”を検査値として ”火”のある2行目と4行目のA列C列の値のみを 【シート2】の特定のセルに表示させる方法を教えてください。 よろしくお願いします。

  • 複数列の検索、値の取り出し方

    教えててください。B列からE列までを順番に検索して値があればA列の時間を取り出すマクロが解かりません。教えていただけないでしょうかお願いします。 B列の10.5のtime(s)300秒をH4セルに記入 C列の10.5のtime(s)240秒をH5セルに記入 D列の10.5のtime(s)180秒をH6セルに記入 E列の10.5のtime(s)120秒をH7セルに記入   CSVデータを読込みデータの取り出しのマクロを作成中に、列検索でつまずきました。

  • エクセルで別シートの値を取得したいです。

    エクセルで質問があります。 別シートからセル値を取得したいです。 ただ、セル番地は行番号、列番号で指定し、 行、列番号はセルに入力してある値を使いたいです。 例 Aシート(値格納シート) B1セル値=1000 -------------- Bシート(値取得シート) A列=行番号入力 B列=列番号入力 C列=Aシートの取得関数 A2セル値=1 B2セル値=2 C2セル=1000(取得値) C2セルの関数に、A2とB2の値を使って Aシートのセル値を取得したいです。 よろしくお願いします。

専門家に質問してみよう