• ベストアンサー

エクセルについて

エクセルについて、 縦に並んだデータをn個ずつ横に並べる関数、もしくは方法はありませんか? 大量なデータを扱うので、コピー&ペースト以外のやり方でお願いします。 例)n=3のとき 1 2 3 4 5 6 7 8 9 10 ↓ 1 4 7 10 2 5 8 3 6 9

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 今仮に、データーがSheet1のA2~A11の範囲に存在していて、n=3で、Sheet2のA2~D4の範囲に並べ替えた結果を表示させるものとします。  まず、Sheet2のA2セルに次の関数を入力して下さい。 =IF(or(ROWS($2:2)>3,(COLUMNS($A:A)-1)*3+ROWS($2:2)>COUNT(Sheet1!$A:$A)),"",INDEX(Sheet1!$A$2:$A$11,(COLUMNS($A:A)-1)*3+ROWS(A$2:A2)))  次に、Sheet2のA2セルをコピーして、Sheet2のA3~A4の範囲に貼り付けて下さい。  次に、Sheet2のA2~A4の範囲をコピーして、同じ行のB列から右方に貼り付けて下さい。  以上です。  尚、Sheet1!$A$2:$A$11の部分に関してですが、データーが存在している最終行の指定は、実際の最終行よりも下の行を指定しても構いません。  例えば、Sheet1!のA2~A11の範囲にデーターが存在している場合でも、Sheet1!$A$2:$A$999等と指定しても構いません。($A$2の方は必ず最初のデーターが存在しているセルに合わせて下さい)

qqqaaazzz1031
質問者

お礼

ありがとうございました。 大変参考になりました。

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

その他の回答 (4)

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

こんにちは! すでに回答は出ていますので、参考程度で・・・ VBAでやってみました。Sheet1のデータをSheet2に表示するようにしています。 画面左下にある操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) 尚、Sheet2は使用していないという前提です。 Sheet1のデータは1行目からあるとしています。 Sub test() 'この行から Dim i, j As Long Dim ws1, ws2 As Worksheet Set ws1 = Worksheets("sheet1") '←Sheet名は実際のSheet名に! Set ws2 = Worksheets("sheet2") j = InputBox("行数を入力してください。") ws2.Cells.Clear For i = 1 To ws1.Cells(Rows.Count, 1).End(xlUp).Row If ws2.Cells(i, 1).Row Mod j = 0 Then ws2.Cells(i, 1) = j Else ws2.Cells(i, 1) = ws2.Cells(i, 1).Row Mod j End If ws2.Cells(i, 2) = WorksheetFunction.RoundDown(ws2.Cells(i + j - 1, 2).Row / j, 0) Next i For i = 1 To ws2.Cells(Rows.Count, 1).End(xlUp).Row ws2.Cells(ws2.Cells(i, 1), ws2.Cells(i, 2) + 2) = ws1.Cells(i, 1) Next i ws2.Columns("A:B").Delete (xlToLeft) End Sub 'この行まで こんな感じではどうでしょうか?m(__)m

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

昨日は逆の質問が出ていた。 これは計算問題なのだ エクセルの式はセルの値を求めたいセルに計算式を入れるのだ。 (VBAであれば自由なので、こんなのは苦労しないが。) そして式を入れるセルの行と列はROW(),COLUMN()関数で得られることを知っておく必要がアル。 其れで1,2例で計算式を考えて、式を一般化すればいいのだ。 たとえば2行2列であれば1列目で3個は使い果たし2列1行目が4番目、2行目はその次(+1)の5だ。 一般にn行、m列では、(m-1)*3は左列で使ってしまっているから、そのn個あとがこのセルに来るべきだ。 それをINDEX関数で元の1列データから持ってくる 例データ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 今回は同一シートでやって見る。またD1セルから右列に出してみる。 また縦行数は、4行でやってみる。 D1に =INDEX($A$1:$A$100,(COLUMN()-3-1)*4+ROW()) これを第4行目目まで(D1:D4)にしきを複写。 そしてD1:D4を右方向に式複写。 式の-3はD列から始めているから入れる必要があるもの。 結果 1 5 9 13 17 2 6 10 14 0 3 7 11 15 0 4 8 12 16 0 0を出さないようにするには (COLUMN()-3)*4+ROW()が、データ数(データが数値の場合は)COUNT(A1:A100)より大なら空白というIF関数をかぶせる。

全文を見る
すると、全ての回答が全文表示されます。
noname#204879
noname#204879
回答No.3

添付図参照 C1: =OFFSET($A$1,ROW(A1)-1+(COLUMN(A1)-1)*3,)

全文を見る
すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

お示しのデータがシート1のA1セルから下方に入力されているとします。 並べ替えた表をシート2に表示させるとしてA1セルにはnの値を例えば3などと入力します。 A2セルには次の式を入力して下方にオートフィルドラッグしたのちに右横方向にもオートフィルドラッグします。 =IF(OR(ROW(A1)>$A$1,INDEX(Sheet1!$A:$A,MOD(ROW(A1)-1,$A$1)+1+(COLUMN(A1)-1)*$A$1)=0),"",INDEX(Sheet1!$A:$A,MOD(ROW(A1)-1,$A$1)+1+(COLUMN(A1)-1)*$A$1))

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

関連するQ&A

  • エクセル98のコピーペーストについて

    エクセル98を使用しております。 そこで、下記のようなコピーペーストが可能かどうか教えて頂けないでしょうか? また、コピーペースト以外に方法があれば、教えて頂きたいのです。宜しくお願いします。 例えば、 A1セルに10、B1セルに15、C1セルに20とあったとして、 A50セルに「=A1]答10、B50セルに「=15」答15、C50セルに「=C1]答20 と置いきたいのです。 つまり、縦方向のデーターをコピーして、横方向に貼りつけていきたいのですがどうでしょうか? 手作業で1つ1つ入れて行くしか方法が無いのでしょうか?

  • エクセル 関数のリンク

    2つのファイルで作った表をリンクさせたいのですができません。 元のファイルの縦データ(関数)を もうひとつのファイルに横書きにリンクさせたいのですが。 縦から縦の場合は$A$1の$を削除してコピーすることでできました。 大量データなので横にもコピーをしたいのですが 宜しくお願いいたします。

  • エクセル2003で表引き

    こんにちは いつもお世話になっています。 エクセル2003で表引き Sheet1のB列に都道府県名があります。 青森 秋田 岩手 愛媛 鹿児島 Sheet2のK1セルにSheet1のB1データを引いてくるために =Sheet1!B1 という関数を入れました。 Sheet2のL1セルにSheet1のB2を引いてきたいのですがフィルハンドルでのコピーに失敗します。 どのような関数を使えば横にコピーできるようになるでしょうか。Sheet2のM1,N1に同様にコピーしていきたいのです。 縦のデータを横にしたいのではなく、関数で引っ張りたいのです。 よろしくお願いします。

  • エクセル カラムからデータ並べ替え

    ウェブからコピーしたデータをエクセル2010にペーストし、すべてA列にデータが入っています。 縦に並んで入っているデータは、17行で一つのデータになっています。 そのため、17行区切りで横に並べていきたいのです。 そのようなマクロプログラムをお教えください。 宜しくお願い致します。

  • エクセルについて教えてくださいm(_ _)m

    いつもお世話になります。 エクセルについておしえてください。  ○シート1の表には縦方向にデータの番号、横方向に各 番号のデータが入力されている状態です。 ○シート2の表はシート1のそれぞれ横に並んだのデー タを縦方向にあてはめて印刷したいのです。 ●シート1のデータをシート2に(イコール)を用いて 持ってくる際に、横方向のデータを縦に表示させるの で、連続して関数をコピーできなくて困っています。 どんな些細な情報でもかまいませんので、教えていただけないでしょうか?

  • エクセルのコピー

    エクセルで縦に並んだ数値なり計算式をコピーしてそのまま横に並べることは出来ますか? 縦に並んでいる数値を縦の範囲にドラッグして、そのセルの数だめ 横にドラッグしてペーストしても横に並ばず、縦の数値がそのまま 横に広がるだけです。 やはり横に自動的に並べ替えることは むりなんでしょうか?

  • エクセルで別のシートに同じ項目を横に入力したい

    エクセルのシート1に縦で項目を入力していますが シート2には同じ項目を今度は横に入力したいので コピーの形式を使って、の行列を入れ替える以外で 関数を使った簡単ないい方法はありませんか?

  • エクセル 2つのシートのデータ集計

    あるシステムからエクスポートしたエクセルデータ(同一内のファイルにある)で複数あるシートデータを結合したいのですが、よくわかりません。(VLOOKUP関数でトライしたがエラー表示されてしまいま一つのシートデータAは概要データで、一つのシートデータBは明細データで、共通するデータは伝票番号になります。(例N..) Aシート N1・N2・N3 Bシート N11・N12・N21・N22・N23・N31 結合させたいシート N1N11・N1N12・N2N21・N2N22・N2N23・N3N31 どのような方法で結合させたら良いか教えてください。

  • エクセルの横から縦へのコピー

    エクセル初心者です。教えてください。 横にデータが並んでいるところから、1つコピーしてプルダウン(縦に)させると横に並んでるデータがついてきません。 縦のデータを→横、もしくは横のデータを→縦へプルダウンで引っ張るにはどのようにしたらいいのでしょうか?

  • Excelのコピー&ペーストについて

    エクセルのコピー&ペーストについて教えてください。 フィルタ機能で、ある用語αでフィルタを掛けたとこだけ、コピー&ペーストしたいのですがうまく行きません。(うまく伝わらなそうなので例をあげます) 縦に10行、横に2列の表があったとして、フィルタを掛けて1行目、5行目、7行目がソートされたとします。 このソートされた1行目、5行目、7行目だけにコピー&ペーストしたいものがあるのですが、何回やっても1行目、2行目、3行目に貼り付けられてしまいます。 「形式を選択して貼付」を使うのでしょうか?教えてください。 実際は何千行もあるので力技系の回答はちょっときついです。お願いします。

このQ&Aのポイント
  • 画面右下のスピーカーの所にカーソルを持っていくと、「サウンドドライバーはインストールされていません」と表示されます。
  • サウンドドライバーが何のかわかりません。どうすれば音が出るようになるでしょうか?
  • 富士通FMVの場合、音が出なくなった場合にはサウンドドライバーの再インストールが必要となります。
回答を見る

専門家に質問してみよう