• ベストアンサー
  • すぐに回答を!

エクセルシートの票データの置き換えについて、

エクセルのシートに (A1)から(D50)まで一覧表があり、それぞれ200個のセルに文字が入力されています。 これを別のシートに縦一列に並び替えたいのですが、 A1=(A1) A2=(B1) A3=(C1) A4=(D1) A5=(A2) A6=(B2) A7=(C2) A8=(D2) A9=(A3) A10=(B3)  ・  ・  ・ A199=(C50) A200=(D50) 出来れば簡易言語で、それで無理ならマクロでも結構です。 よろしくお願いします。

noname#18526

共感・応援の気持ちを伝えよう!

  • 回答数4
  • 閲覧数138
  • ありがとう数0

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

  • ベストアンサー
  • 回答No.4
  • Wendy02
  • ベストアンサー率57% (3570/6232)

こんにちは。 >出来れば簡易言語で、それで無理ならマクロでも結構です。 こちらのカテゴリでお聞きになっているので、どうしても、VBAの回答になってしまうと思いますね。ただ、簡単な書き方というか、記録マクロに近い状態で書くと、以下のようになります。 Sub Macro1Revised() Dim Sh1 As Worksheet Dim Sh2 As Worksheet Set Sh1 = Worksheets("Sheet1") Set Sh2 = Worksheets("Sheet2") With Sh2.Range("A1:A200")  .FormulaLocal = _  "=OFFSET(" & Sh1.Name & "!$A$1,INT((ROW(A1)-1)/4),MOD(ROW(A1)-1,4))"   .Value = .Value End With Set Sh1 = Nothing: Set Sh2 = Nothing End Sub '----------------------------------------------- 'VBAらしくするなら、こんな風にもありかな? '選択範囲が4角形で、1列にするなら可能なのです。 '----------------------------------------------- Sub TransferValues() Dim i As Long Application.ScreenUpdating = False For Each c In Worksheets("Sheet1").Range("A1").CurrentRegion  i = i + 1  Worksheets("Sheet2").Cells(i, 1).Value = c.Value Next c Application.ScreenUpdating = False End Sub '----------------------------------------------- なお、余談ですが、マイクロソフト側のOfficeの「マクロ」のオフィシャルな定義ですが、『プログラマーズガイド』の中の「プログラミングの基礎」では、 マクロは、引数を持たないパブリックなSub プロシージャだけのことを指す、としています。すべてのマクロは、プロシージャではあるが、すべてのプロシージャがマクロであるとは限らない、マクロの記録機能を使って生成されるプロシージャとOfficeアプリケーションの[マクロ]ダイアログボックスから実行できるプロシージャは、すべてマクロである、と言っております。 パブリックなSub というのは、Public キーワードを付けて宣言しますが、端にその区別だけであって、パブリック・プロシージャを作成する時には、Public キーワードを使用する必要はありません、となっています。 知っている人は、百も承知の話ですが、もう、マイクロソフトのオフィシャルな書籍なんて顧みられることはありませんから、その内容が意外っていう人もいるかもしれません。

共感・感謝の気持ちを伝えよう!

質問者からの補足

皆さん有難うございます。実用化しました。

関連するQ&A

  • Excel2007でVBAでも関数でも構いません。

    Excel2007でVBAでも関数でも構いません。以下のように表示させる方法がお分かりの方、ご指導願います。 A1(●) B1() A2(●) B2() A3() B3() A4(●) B4() A5() B5() A6() B6(●) A7() B7() A8() B8(●) A9() B9() A10(●) B10() を・・・ C1(●) D1() C2() D2() C3() D3() C4() D4() C5() D5() C6() D6(●) C7() D7() C8() D8() C9() D9() C10(●) D10() に。 言葉では上手く説明できませんが、宜しくお願い致します。

  • Excel n行毎の合計数値

    Excelで2行毎、できればn行毎に合計値を求めるセルを作りたいのです。 A1:A10に{1,2,3,,,,}と値が入っているとして、B1から B1=A1+A2 B2=A3+A4 B3=A5+A6 というふうになり、B1=3,B2=7,B3=11,,,と1行毎に合計する範囲がズレていくような列を作るには どうすればいいでしょうか? C1=A1+A2+A3 C2=A4+A5+A6 C3=A7+A8+A9 となっていくような列を作る必要も出てきそうなので、 n行合計ずつ以外でも出来る方法をお願いします。

  • エクセルの並び替えで順番どうりにならない

    エクセル2003です。 並び替えでA列を対象にして 以下のように並び替えたいです。 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 B12 ですが並び替えを実行すると A1 A10 A11 A12 A13 A2 A3 A4 A5 A6 A7 A8 A9 B1 B10 B11 B12 B2 B3 B4 B5 B6 B7 B8 B9 となってしまいます どのような方法がありますか。 よろしくお願いします。

その他の回答 (3)

  • 回答No.3
  • imogasi
  • ベストアンサー率27% (4558/16317)

>簡易言語 この言葉はエクセルでは使わないと思います。関数や関数式による 解法でしょうか。昔はPIPSとか、EPOCALCJとか色々もてはやされましたが。 >マクロ エクセルVBAです。アクセスと違って、マクロは特別なものはなく、エクセルVBAです。「マクロの記録」で使われているために、よく使われていますが。 ーーーー 本題 関数式による解法。 各列の最下行がばらばらだと、関数では難しい。そろっているとして、 例として、簡単のため、7行の表データにしました。 Sheet1の A2:D8(A1:D7ではないです、注意。式が変わるので) A-D列以外の列にたとえばF列以外に F2に =INDEX($A$2:$D$8,MOD(ROW()-2,7)+1,INT((ROW()-2)/7)+1) と入れて、式をした方向に複写 1 2 3 4 5 6 7 8 9 10 11 12 13 以下略。 50行なら =INDEX($A$2:$D$51,MOD(ROW()-2,50)+1,INT((ROW()-2)/50)+1) sheet2に作るなら A2などに =INDEX(Sheet1!$A$2:$D$51,MOD(ROW()-2,50)+1,INT((ROW()-2)/50)+1)

共感・感謝の気持ちを伝えよう!

  • 回答No.2
noname#22222

Private Sub CommandButton1_Click()   Dim I As Integer   Dim J As Integer   Dim R As Integer   For I = 1 To 50     For J = 1 To 4       R = R + 1       Worksheets(2).Cells(R, 1) = Worksheets(1).Cells(I, J)     Next J   Next I End Sub ※Excel 門外漢ですので、参考程度に!

共感・感謝の気持ちを伝えよう!

  • 回答No.1

自分のやり方を書かせてもらいます。 参考になればいいのですが・・・。 設定:Sheet1の200個のデータをSheet2に縦横変換して書く For i=1 to 200 sheets("Sheet2").Cells(i,1) = sheets("Sheet1").Cells(1,i) Next i こういったソースではどうですか?

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • エクセル等でのデータ抽出

     こんばんは、愚生は、エクセルデータベースの全くの初心者でございます。以下の質問をさせていただきたく、ブログをたてたせてもらいました。 以下のようなA列に日付;B列に地名;C列に数値が載せたtableがございます。(行数は総計約5000程度まで続きます) A1: 2009/10/3, B1: 東京; C1: 12000 A2: 2009/10/3, B2: 大阪; C2: 10000 A3: 2009/10/3, B3: 名古屋; C3: 7000 A4: 2009/10/3, B4: 京都; C4: 3000 A5: 2009/10/3, B5: 金沢; C5: 500 A6: 2009/10/3, B6: 神戸; C6: 4000 A7: 2009/10/5, B7: 大阪; C7: 7000 A8: 2009/10/5, B8: 東京; C8: 8000 A9: 2009/10/5, B9: 京都; C9: 5000 A10: 2009/10/5, B10: 横浜 C10; 4000  A11: 2009/10/6, B11: 東京; C11: 9000 A12: 2009/10/6, B12: 大阪; C12: 7000 A13: 2009/10/6, B13: 名古屋; C13; 8000 A14: 2009/10/6, B14: 京都; C14: 4000 A15: 2009/10/6, B10: 横浜; C15: 5000 2009/10/3には計6個のデータがあります 2009/10/3には計4個のデータがあります 2009/10/6には計5個のデータがあります →   「各日にちごとに、C列の値が大きい順にベスト3ずつを選び、表示させたい訳でございます。」 A1: 2009/10/3, B1: 東京; C1: 12000 A2: 2009/10/3, B2: 大阪; C2: 10000 A3: 2009/10/3, B3: 名古屋; C3: 7000 」 A4: 2009/10/5, B6: 東京; C6: 8000 A5: 2009/10/5, B7: 大阪; C7: 7000 A6: 2009/10/5, B8: 京都; C8: 5000 」 A7: 2009/10/6, B9: 東京; C9: 9000 A8: 2009/10/6, B10: 名古屋 C10; 8000 A9: 2009/10/6, B11: 大阪; C11: 7000 」  もし、mysql (SQL server)等のデータベストソフトが必要な場合も、対処させていただきます。  それでは、よろしくお願い申し上げます。

  • エクセルのシート間引用数式の行単位複写について

    エクセルの行単位複写について質問です 同じブック内の別のシートからデータを引用しています。 単に引用するだけで演算は加えませんが、引数が空白の場合に表示が何も出ないように=IF関数を入れています。 そして難点は、引数のあるシートは1行単位、使用するシートは2行単位の表になっていることです。 引数のシートのデータ構成 A10 A11 A12 B11 B12 C11 C12 D11 D12 A20 A21 A22 B21 B22 C21 C22 D21 D22 ・ ・ ・ A500 A5001 A5002 B5001 B5002 C5001 C5002 D5001 D5002 使用するシートの様式 1行目 A10 A11 B11 C11 D11 2行目 結合 A12 B12 C12 D12 3行目 A20 A21 B21 C21 D21 4行目 結合 A22 B22 C22 D22 A10 A20 は上下セルを結合しています。 このような場合、左クリック+ドラッグで行単位のコピーを行うと、拾ってくるデータが飛び飛びになってしまします。 行数が多く、数式の引用セル位置の数値をいちいち手入力や置換処理で修正していると非常に手間がかかるので、一気に数式を入力する方法はないでしょうか。 よろしくご指導お願いします。

  • エクセルのマクロの事?

    エクセルで A1あ、B1い、C1う A2え、B2お、C2か A3き、B3く、C3け 以下続く このようになっている物を A1あ A2い A3う A4え A5お A6か A7き A8く A9け こんな感じにマクロを使って変更したいのですが、どのようにすればいいでしょうか?

  • EXCEL 並び替え

    a1 a4 a7 a10 a13 a16 a19 a2 a5 a8 a11 a14 a17 a20 a3 a6 a9 a12 a15 a18 a21 b1 b4 b7 b10 b13 b16 b19 b2 b5 b8 b11 b14 b17 b20 b3 a6 b9 b12 b15 b18 b21 上記のような3x7で一セットのかたまりのデータ(実際は文字列がはいっています)を下記のように簡単に横に並び替えるにはどうしたらよいでしょうか。各このセットが1枚のエクセルに最大30セットあり、EXCELは20ファイル程あるので手早くならびかえる方法を探しています。 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19 a20 a21 b1 b2 b3 b4 b5 b6 b7 b8 b9 b10 b11 b12 b13 b14 b15 b16 b17 b18 b19 b20 b21

  • リストファイルの列の操作

    シェルスクリプト(Bシェル)の中で、 例えば以下のようなカンマ区切りのリストファイルを ---------------- a1,b1,c1 a2,b2,c2 a3,b3,c3 a4,b4,c4 a5,b5,c5 a6,b6,c6 a7,b7,c7 a8,b8,c8 a9,b9,c9 a10,b10,c10 ---------------- 以下のように変換する方法が知りたいです。 ---------------- xx,a1,b1 xx,a2,b2 xx,a3,b3 xx,a4,b4 xx,a5,b5 xx,a6,b6 xx,a7,b7 xx,a8,b8 xx,a9,b9 xx,a10,b10 ---------------- ※3列目を削除して、1列目に"xx"の文字列を挿入。 forやwhileで1行ずつ読み込んで処理するのではなく、 sedやawk等を用いてズバッと変換する方法が知りたいです。 宜しくお願いします。

  • エクセルの関数式を教えてください

    セルA1に1、B1に2、C1に3、D1に10、A2に2、B2に3、C2に4、D2に20、A3に5、B3に6、C3に7、D3に30、A4に1、B4に3、C4に5、D4に40、A5に2、B5に4、C5に6、D5に50、と入っています。 そこで、A7に5、B7に6、C7に7、D7に30、A8に2、B8に4、C8に6、D8に50と入力したとき、A1~A5行の中でこれと同じデータに色をつけたいのですが(1色でも2色でもいいのですが、出来れば違う色で)教えてください。 よろしくお願いします。

  • エクセルの関数 反映の仕方

    sheet1のA1→10 A2→11 A3→12 A4→13 A5→14 A6→15 A7→16 A8→17 A9→18 A10→19 sheet2にA1→11 B1→3,A2→14 B2→2,A3→16 B3→3 A4→18 B4→1 とあった場合 Sheet2のB1~B4の数をsheet1の数の横(B列)に反映させたいのですがどうやったら出来るでしょうか? 分かりにくかったら補足しますので宜しくお願いします

  • 別のシートにデータを出す方法

    シート1に 番号 A1に1 A2に2 A3に3 A4に4 データ↓ B1に43 B2に45 B3に47 B4に55 C1に733 C2に890 C3に826 C4に94 D1に57 D2に67 D3に41 D4に52 E1に301 E2に104 E3に719 E4に441 という表があるとします。 番号1の場合は、B1の43、C1の733、D1に57、E1に301というデータです。 シート2の、 A3に、1という数字(シート1のA1の、1という番号)をいれれば、 シート2の B3に、シート1の、B1の43というデータ。 C3に、シート1の、C1の733というデータ。 D3に、シート1の、D1の57というデータ。 E3に、シート1の、E1の301というデータ。 がでるようにしたいのですが、 VLOOKUPを使ってできますか? どのような関数の立て方したらいいでしょう? XPのExcel2003です。 よろしくお願いしますm(_ _)m

  • Excel上でのセルの並び替えについて

    Excel2007にて下記作業は可能でしょうか? (シート1) A1   B1   C1   D1 田中  ○   鈴木  △ A2   B2   C1   D2 浜田  ×        A3   B3   C1   D3 後藤  ○   加藤  × ↓ (シート2) A1   B1   C1 田中  ○ A2   B2   C2 鈴木  △ A3   B3   C3 浜田  ×    A4   B4   C4 後藤  ○ A5   B5   C5 加藤  × 上記のとおり別シートに自動で並び変える数式はあるのでしょうか? データの量が多いのと、Excelの操作ができない人用に自動化したいのですが。

  • エクセルでこんな並べ替えできますか?

    A,B,C,D列に次のような文字列が入っていたとします。 A1 B1 C1 D1 A2 B2 C2 D2 A3 B3 C3 D2 これをどこかの列に次のように並べ替えたいのですが。 A1 B1 C1 D1 A2 B2 C2 D2 A3 B3 C3 D3 実際は各行が100以上ありますし、列の数も場合により変ります。 よろしくお願いします。