• ベストアンサー

Excel VBAでデータを並び替えたい

D~M列に値が10個入っています。 D1,E1の値を取り出して、A1,B1セルに移動させ、 次はF1,G1の値をA2,B2に移動させ、それをL1,M1をA5,B5に移動するまで繰り返し、 次はD2,E2の値をA6,B6へ移動させ、L2、M2まで繰り返します。 横に10個の数値が入っているものから、2つずつ取り出して 2列縦に値を並べたいのです。 元の値が並んでいるところ(D~M列)は、ところどころ値が10ではなく、4だったり、6だったりしますが、 5つ目と6つ目以降、あるいは7つ目と8つ目以降の値も空白としてA,B列に移動させたいです。 ご教示くださいますよう、お願いします。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! >元の値が並んでいるところ(D~M列)は、ところどころ値が10ではなく、4だったり、6だったりしますが とありますが、D列は必ず最終行までデータがあるという前提です。 (D列でD~M列の最終行を取得しているため) 色々やり方はあると思いますが、一例です。 Sub Sample1() Dim i As Long, j As Long, cnt As Long Range("A:B").ClearContents For i = 1 To Cells(Rows.Count, "D").End(xlUp).Row For j = 4 To 12 Step 2 cnt = cnt + 1 Cells(i, j).Resize(, 2).Copy Cells(cnt, "A") Next j Next i End Sub こんな感じではどうでしょうか?m(_ _)m

tokyowar
質問者

お礼

あまりに早い回答に驚きました。感謝しきりです。一日無駄にせずにすみました。

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

関連するQ&A

  • エクセルVBAでのまとめ計算

     初めまして、よろしくお願いします。 データーで    A      B     C     D      E ・・・ 1              5     7      2 2              3     7      0 3 4              6     3      6 5              2     8      3 6              0     3      4 ・     ・      ・      ・      ・ ・     ・      ・      ・      ・ 100             3     4      5 という表がありますA列には(C列の値/(D列以降の平均値))をB列には(C列の値-(D列以降の平均値))を表示させたいと思います。たまに3行のような空白の行があります。関数式ではなく、VBAで解る方、よろしくお願いします。

  • エクセルVBAで質問です

    下のような表を作っています。 A列に日付がある限り、B、C、D、E列それぞれの列に対して、 3行目以降のデータが検索値と同じであれば、そのひとつ上の行の 値をG、H、I、J列にそれぞれ上から順に入れていきたいのですが、 どのようになるでしょうか。 A1 月日 B1 検索値1・・・B3以降データ C1 検索値2・・・C3以降データ D1 検索値3・・・D3以降データ E1 検索値4・・・E3以降データ G2以降に検索値1で調べた値 H2以降に検索値2で調べた値 I2以降に検索値3で調べた値 J2以降に検索値4で調べた値 例えば、B1の検索値が1であり、B10に1があったとします。 この場合、ひとつ上のB9の値をG2に来るようにしたいのです。 説明下手ですが教えていただけないでしょうか。

  • EXCELデータの縦横変換について教えて下さい

    数値はランダムですか奇数行には+の値、偶数行には-の値が 入っているシートから(+/-の値は同じではありません)別 のシートに次の様に移したいのですが方法はありませんか? 移動元シート: A B C D E F 1 + 19 18 17 16 15 2 - 29 28 27 26 25 3 + 39 38 37 36 35 4 - 49 48 47 46 45 5 + 59 58 57 56 55 6 - 69 68 67 66 65 7 + 79 78 77 76 75 8 - 89 88 87 86 85 移動先シート: A B C D E 1 + 19 39 59 79 2 - 29 49 69 89 3 + 18 38 58 78 4 - 28 48 68 88 5 + 17 37 57 77 6 - 27 47 67 87 移動元の B1,B2 C1,C2 D1,D2 の組となっている値を 移動先の B1,B2 B3,B4 B5,B6 に移したいです。 データ数としては横は8個、縦は200行程度です。

  • VBA,二つのExcelのsheetにデータ保存

    VBA初心者です。 皆様のお力をお貸し頂きたく質問させて頂きます。よろしくお願いいたします。 質問内容は、下記になります。 Excelのsheet1には、縦列A,B,C・・・とデータが入っております。 sheet1の例 A B C sheet2は、入力するsheetです。 今回はA列の3行目からとします。 問題は、sheet1の縦の列をA,B,C,Dとすればデータの更新は、出来るのですが sheet1のデータのA,B,C一つ飛んでEまた一つ飛んでGという感じでsheet1のデータを 飛ばしてsheet2に表示、更新(保存)をしたいと思います。 ですので、sheet2のA列の3行目からA,B,C,飛んでE飛んでGとsheet1からデータを 表示させ、さらにsheet2の入力値が変更されると、sheet1のデータが入っている A,B,C,E,Gに更新される仕様です。 sheet1(データが入っています) A , B , C , E , G , 値1 , 値2 , 値3   , 値4 , 値5 sheet2(入力する、入力したデータは、sheet1へ更新される) A列 3行目 、sheet1の値1(A列)が入ります。 4行目 、sheet1の値2(B列)が入ります。 5行目 、sheet1の値3(C列)が入ります。 6行目 、sheet1の値4(E列)が入ります。 7行目 、sheet1の値5(G列)が入ります。 以上です。申し訳ございませんが、ご教授よろしくお願いいたします。

  • excelでデータを別シートに引っ張ってきたい

    excelで値を検索し、返す時、返す値の横にあるデータを違うシートのセルの下に一緒に引っ張ってきたいときの関数(方法)を教えてください。 素人なので分かりにくいと思いますが、お知恵をお借りしたいと思います。 あるデータのシートの検索値を別シートに持ってきたいのですが、シート1をシート2のようにしたいのです。 /は空白 例)シート1 /A B C D E 1(1) □ ○ ▽ ◎ 2 (2) ▼ ■ ◇ ◎ シート2 / A B C D 1 (1) □ 2 /○ ▽ ◎ 3 (2) ▼ 4 /■ ◇ ◎ 分かりにくいかもしれませんが、 シート1の(1)(A1)を検索すると、シート2(B1)に□(これはVLOOKで引っ張ってこれるのはわかります。) 次にシート1の(C1)○をシート2の(B2)へ持ってきたいのです。シート1(D1)(E1)はシート2の(C2)(D2)へ。 しかもシート1のC列は空白セルもあり、シート1のC列が空白の場合、下にずれることなくシート1の(D1)(E1)はシート2の(C1)(D1)へ。下記<図a>のようになるようにしたいのです。 そして、シート2のA列に検索値として入力する(1)や(2)の値は連番ではなく、(2)の次に(5)に飛んだりします。(2)の行のC列にデータがあっても、(5)のC列にデータはないこともあります。<図b> <図a> /A B C D 1 (1) □ ▽ ◎ 2 (2) ▼ ◇ ◎ <図b> / A B C D 1 (1) □ 2 /○ ▽ ◎ 3 (2) ▼ 4 /■ ◇ ◎ 5 (5) □ ▽ ◎ 6 (7) ▼ ◇ ◎ vlookとかCLUMN関数とか考えてはみたのですが、どうもうまくいきません。 毎回作成するデータなのですが、毎回コピペで作成しています。 とても面倒なので(1)を検索したらデータが一瞬で検索できるようにしたいと試みてはみたものの、私の知識では不可能でした。 関数では無理なのでしょうか。。。 関数はあまり詳しくないので分かりやすい方法があれば、教えていただければ助かります。 関数に詳しい方、よろしくおねがいいいたします。 関数にはこだわっていません。違う方法があればそれも含めておねがいいたします。

  • エクセルVBA 全ての組み合わせを作る

    エクセルVBAで、全ての組み合わせを表現する方法を教えてください 既にA列に色、B列に数字、C列にサイズが入力済みだとします   A  B  C 1  色  数字 サイズ ←タイトルの行 2  赤   1  S 3  青   2  M 4  緑   3  L (完成例)   D  E  F 1  色  数字 サイズ ←タイトルの行 2  赤   1  S 3  赤   1  M 4  赤   1  L 5  赤  2  S 6  赤  2  M 7  赤  2  L 8  赤  3  S 9  赤  3  M 10 赤  3  L 11 青   1  S 12 青   1  M 13 青   1  L 14 青  2  S 15 青  2  M 16 青  2  L 17 青  3  S 18 青  3  M 19 青  3  L 20 緑   1  S 21 緑   1  M 22 緑   1  L 23 緑  2  S 24 緑  2  M 25 緑  2  L 26 緑  3  S 27 緑  3  M 28 緑  3  L ・全ての組み合わせが表現できていれば、2~28行目は上の完成例の順番でなくてもいいです ・完成はD~F列の上から(2行目から)結果を反映させ、空白行を作らないようにする ・今回はA~C列の4行まで入力されている例をあげましたが、実際はA~C列の何行まで入力されているか随時変更します ・A~C列のデータ入力は、必ず上から(2行目から)されています ・A~C列のデータ入力は、5行目以降に続くこともあります ・A~C列のデータ入力は、データがない場合もあります (データ入力がない場合)   A  B  C 1  色  数字 サイズ ←タイトルの行 2      1  S 3      2  M 4         L (この場合の完成例)   D  E  F 1  色  数字 サイズ ←タイトルの行 2      1  S 3      1  M 4      1  L 5     2  S 6     2  M 7     2  L 空白行が出来てしまってはいけないので、『まずデータ入力されている列を認識し、認識した列の情報で全ての組み合わせを作成する』という考え方なのかな?と思ったのですが、そのようなことをエクセルVBAでできるのでしょうか もし分かる方がいたら教えてください よろしくお願いします

  • エクセルVBAについて

    エクセルVBAについての質問です。A1、B1と順に入力していき、最終 F1列にカーソルがいったときに(F1を空欄のまま)エンターキーを押すと次の行のD2にカーソルが飛ぶ、そしてD2、E2に入力をして、G列にカーソルを動かしエンターキーで次の行のA列にカーソルが移動する、こんな操作をしたいのですが。つまりF列にカーソルがいったらカーソルは次の行のD列に飛び、G列にカーソルがいったら次の行の先頭つまりA列にカーソルが移動するように。VBA初心者でもつくれるかどうか、よろしくお願いします。

  • エクセル マクロでセルを自動移動

    例1のようになっているエクセル表があります。 データは右方向、下方向へ増えます。 Cの列以降は4つ単位でしかデータは増えません。 それを例2の表のように列A,Bのデータはそのままに Cの列以降の4つのセルを区切りに下の行に移動して、 空白の列まで言ったらA2の行以降を最後の行まで繰り返しするという マクロを書くことは可能でしょうか。 出来ましたらそのマクロを教えてください。 例1 A1 B1 C1 D1 E1 F1 G1 H1 I1 J1 K1 L1 M1 N1 A2 B2 C2 D2 E2 F2 G2 H2 I2 J2 A3 B3 C3 D3 E3 F3 G3 H3 I3 J3 K3 L3 M3 N3 例2 A1 B1 C1 D1 E1 F1 A1 B1 G1 H1 I1 J1 A1 B1 K1 L1 M1 N1 A2 B2 C2 D2 E2 F2 A2 B2 G2 H2 I2 J2 A3 B3 C3 D3 E3 F3 A3 B3 G3 H3 I3 J3 A3 B3 K3 L3 M3 N3

  • エクセルVBAでデータを並べる

    お願いいたします。 今 B列C列 E列F列 H列I列・・・以下略 B,C列の数値群の塊を一個と数えこの個数をm個とします。 行数は n個とします。 B列C列の最後尾にE列F列の数値群を移動させ(B,C列が縦に長く なります) さらに H列I列の数値群をそのあとに続けます。 これをm個分繰り返す処理コードをご教示ください。 なお、どの列においても、最初の数値は6行目から始まります。 したがって各列の最後部は6+n個です。B列とC列だけつながれる 分どんどん長くなります。 簡単なコードと思いましたが、この処理だけで一日かかって 解決できません。どなたか、コード例をご教示お願いします。

  • エクセル関数で飛び飛びのデータの値を表示したい

    こんにちは。お世話になります。 エクセル(2000)で質問です。 ある表があり、一番左の列にはインデックス(仮にB列とします)、 2列目(C列)には日付、3列目(D列)には値が入っています。 イメージだと   A  B    C   D   1   コーラ  5/30  20    2        6/10  10    3        6/11  20    4   ミルク  4/30  10    5        5/11  35    のような感じです。(セルは結合されてません) データベースとして扱うならば、B2にもコーラという値が 入っている、という認識ですが、実際は空白セルとなっています。 そこで、A列に、Bのインデックスの値を入力したいのですが、 どのようにしたら良いのか悩んでいます。 上記で言うと、A1~A3にはコーラ、A4~A5にはミルク、という 値がはいってほしいです。 次のインデックスまでの空白セルの数は不規則です。 データの件数は何千件とかなり多いので、関数で一気に出せると 非常に助かります。 分かりにくい質問で申し訳ありませんがどうぞよろしくお願いします。

このQ&Aのポイント
  • ブラザー製品のヌーベル250において、丸針から平針への交換が可能かどうかについて相談したいです。
  • 現在は丸針を使用していますが、より平針を取り付けたいと考えており、針棒の交換ができるかどうか、また他に良い方法があるかを教えてください。
  • 質問したい内容は、ブラザーのヌーベル250の針棒を交換して平針を取り付けることができるかどうか、また他の方法があるかどうかです。
回答を見る

専門家に質問してみよう