• ベストアンサー

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

エクセルのシートに (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
noname#18526

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

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

こんにちは。 >出来れば簡易言語で、それで無理ならマクロでも結構です。 こちらのカテゴリでお聞きになっているので、どうしても、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 キーワードを使用する必要はありません、となっています。 知っている人は、百も承知の話ですが、もう、マイクロソフトのオフィシャルな書籍なんて顧みられることはありませんから、その内容が意外っていう人もいるかもしれません。

noname#18526
質問者

補足

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

その他の回答 (3)

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

>簡易言語 この言葉はエクセルでは使わないと思います。関数や関数式による 解法でしょうか。昔は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)

noname#22222
noname#22222
回答No.2

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 門外漢ですので、参考程度に!

  • yakou850
  • ベストアンサー率49% (25/51)
回答No.1

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

関連するQ&A

  • エクセル 入力シートのデータを別シートに書き込む

    エクセル 入力シートのデータを別シートに書き込む 1.Sheet1のA2に数字、B2に数字、C2に数字、D2に数字、E2に数字、F2に数字、G2に数字、にを入力する。 2.内容確認後、入力ボタンを押すと、 Sheet2のF2にSheet1のA2の数字、 Sheet2のH2にSheet1のB2の数字、 Sheet2のI2にSheet1のC2に数字、 Sheet2のJ2にSheet1のD2に数字、 Sheet2のK2にSheet1のE2に数字、 Sheet2のL2にSheet1のF2に数字、 Sheet2のM2にSheet1のG2に数字が反映され、sheet2の入力されたデータが一列づつたされていく。 つまり。sheet1は入力シートで、同じセルに値を入力します(次回はデータが上書きされる)が、sheet2では、集計表の1列ずつ下に新しく記録されていく。 このような入力フォーム(マクロ)を作りたいと思っています。 わかりづらい質問で申し訳ありませんが教えていただけませんでしょうか。 よろしくお願いします。

  • エクセルでリストに対応するデータを別シートの表

    エクセルでリストに対応するデータを別シートの表に参照したいです。 「表シート」のB2にリストを作って、 (リストは「一覧表シート」のA,B,Cが入力されているセルを参照しています。) Aを選択すると101の下の段(B11)に、 「一覧表シート」のAの列101の111が入力されるようにしたいです。 Bを選択すると222、Cを選択すると333が入力できるようにしたいです。 この「表シート」の表がややこしいのですが、 建物の部屋番号に対応しているため、3階2階1階という順になっています。 関数で対応できるものでしょうか? 分かりにくい表ですが、よろしくお願いします。

  • Excelのシート間の参照

    Excelでシート間のセルの参照をしたいのですが、どのシートを参照するのかを すぐに変えることのできるようにしたいのです。 具体的には、A、B、Cという名前のシートがあり、シートDにおいて A1セルにA、B、Cいずれかの文字を入力すると、その下のセルの参照先が シートAのB1セルになるようにしたいのです。 とりあえず色々式を入れてみたのですが、すべて拒否されてしまいました。 たとえば ='A1'!B1 ='"A1"'!B1 とかです。 よろしくお願いします。

  • Excel シート1の雛型からシート2の一覧表作成へ

     お世話になります。  私は会社でExcelを使い事務をしております。  式を入力して少し事務を簡素化する事は出来ますが、マクロやVBには明るくありません。  シート1の雛型1箇所に入力すると同時に、シート2に一覧表が作成される様には出来ないものでしょうか?  頑張ってマクロを使ってみましたが、シート1のB1を入力するとシート2のB1の数値まで変わってしまいます。(表を参考にしてください)  シート1(雛型)    A       B        C 1 固定数  入力した数字  数式A/B  シート2(一覧表)     A           B         C 1 シート1A1の数字 シート1B1の数字 シート1C1の数字  2 シート1A1の数字 シート1B1の数字 シート1C1の数字 3 シート1A1の数字 シート1B1の数字 シート1C1の数字 4 シート1A1の数字 シート1B1の数字 シート1C1の数字  分かりにくい説明で申し訳ありません。  皆さまのお知恵をお待ちしております。  よろしくお願いします。

  • エクセル 入力フォームのデータを別シートに書き込む

    エクセル 入力フォームのデータを別シートに書き込む方法 1.シート1のA2に日付、B2に文字列、C2に金額、D2に個数、E2に合計金額を入力する。 2.内容確認後、入力ボタンを押すと、 Sheet2の集計表リンクさせ、尚且つシート2内で1か月分の集計を取ります。 つまりシート1は入力シートで、同じセルに値を入力します(次回はデータが上書きされる)が、シート2では、集計表の1列ずつ下に新しく記録され1か月分の入力がされていく。 このような入力フォーム(マクロ)を作りたいと思っています。 初めて投稿するので、質問がよく分からないかもしれませんが、 よろしくお願いします。

  • シートの非表示について

    マクロを始めたばかりで解読はできるのですが、まだまだ自分で文書を作ることが出来ません。どなたか教えて下さい。 (1)まず、A,B,C,Dのシートを作ります Aシート = 入力シート Bシート = 入力シートで入力したデーターを表にして表示されるシート Cシート = 入力シートのセルA1~A15までのデーターがCシートのA1~A15に表示されるシート Dシート = 入力シートのセA16~A30までのデーターがDシートのA1~A15に表示されるシート (2)マクロボタン『非表示』を押す (3)シートが下記のように非表示される Aシート = 表示 Bシート = 表示 Cシート = シートのセルA1に入力があれば表示、無ければ非表示 Dシート = シートのセルA1に入力があれば表示、無ければ非表示 (If Sheets("Cシート").Range("A1").Value <> "" Then)みたいな というマクロを作りたいのですが。

  • Excelのシート間でのリンクの仕方について

    Excel2007での質問です。 下の様な一覧表があるとします。   A  B  C  D  E 1 あ い う  え お 2   き く  け こ 3 さ  し す  せ  そ この入力した一覧表を別のシートに下記のような票にしてリンクさせたいのですが これは可能な事なのでしょうか? A  あ    A  さ B  い    B  し C  う     C  す D  え     D  せ E  お     E  そ ※上記の『2』の行の『きくけこ』は『A』列に入力がないのでリンクさせません。 『A』列に入力した行のみを、別のシートにリンクさせる方法です。 どなたか、おわかりになる方。 Excelは初心者も同然です、宜しくお願いいたします。

  • Excel 複数のシートを使って自動入力させていです。

    Excel 複数のシートを使って自動入力させていです。 Sheet1に「一覧表」とし、A1に日にち・B1に入荷先・C1「品物名」・D1「金額」を入力していく一覧表を作成しました。 入荷先の名前をSheet2.3に作り、入荷先ごとにリストを作成したいです。 一覧表に入力しただけで、自動的に入荷先ごとのシートに自動的に入力されてるってことって出来ますでしょうか? 例   A   B   C   D 1 日にち 入荷先   品物   金額 2 4/1 Aスーパー たまねぎ  100 3 4/5 B商店    きゅり   50 これをSheet1「一覧表」をした場合、 Sheet2を「Aスーパー」とし、Sheet2を「B商店」として。同じ表を作成しておく。 一覧表のシートにAスーパーでの購入を入力すると、「Aスーパー」のシートに自動的に表が作られていく 説明下手で申し訳ありませんが、よろしくお願いします!

  • 違うシートにデータを抜き出したい。

    エクセルのシート2に    A   B   C    D 1 物件A ○  情報a 情報b 2 物件B -  情報a 情報b   3 物件C ○  情報a 情報b と、4行目以降もあります。 そして、シート3にシート2のB列で”○”となっている物件だけの表を作りたいのです。    A    B    C 1 物件A  情報a 情報b 2 物件C  情報a 情報b  この下にもどんどん続けていきたい。 ※シート2はシート1のデータがマクロによって表示されている。  例)シート1の物件Aが終了になると、シート2の物件Aが消えて物件Bが1行目に表示される。 ※シート2のデータはほとんどシート1のデータがマクロによって表示されている。  シート2に”○”と表示されるのもシート1に入力してるから。 ※このマクロを作った人はすでに退職していて、社内でこのマクロを解明できる人がいない。  ちなみに私はマクロ初心者です。

  • EXCELでシートのデータを別のシートに反映させていく方法はありますか??

    データの一覧表を作って ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・  大分類 小分類  月日  内容 A B C D E… 1     2 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ と入力済みなのですが、別のシートにこのデータを使って、大分類ごとのシートを作り、また、そのシート内で月ごとにデータを管理したいのですができますでしょうか??下記のような一覧表を作り印刷できるようにしたいんです。 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 大分類 小分類 月日 内容 A B C D E…   ・   ・   ・ 合 計 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ よろしくお願いします。

専門家に質問してみよう