• ベストアンサー

Excel教えてください。

いつもお世話になってます。 |A |B |C |D |E | 1|(1) |(2) |(3) |(4) |(5) | 2|(6) |(7) |(8) |(9) |(10) | のように列に入ってるデータを |A | 1|(1) | 2|(2) | 3|(3) | 5|(4) | のように一行に並べたいのですが、何か簡単に出来る方法がありましたら教えてください。 Win.95 Excel 97

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.6

>どうしてこうなるのかがあまり理解出来ず、 >特にJ1は何につかうのかが分かりませんでした ROW関数は引数のセル番地を指定して、そのセルの行番号を返します。 従って、"J1"の行番号"1"が重要で、列番号"J"は何でもいいのです。 ROW(A1)もROW(J1)もROW(Z1)もROW(AA1)も返される値は同じですから。 ちなみに、ROW()と、引数を省略すると、そのセルの行番号を返します。 その他の関数は、 MOD関数は、第1引数を第2引数で割った余りを返します。 INT関数は、引数を小数点以下を切り捨てた整数にして返します。 OFFSET関数は、基準となるセル(第1引数)から、何行何列(第2、3引数)移動したセルを左上にして、行×列(第4、5引数)のセル範囲を返します。 今回は、1つのセルを返すように、第4、5引数は両方とも1にしてます。 詳細はヘルプを参照して下さい。 その上でimogasiさんのように分けて入れると分かり易いと思います。

e3rin
質問者

お礼

早速の回答ありがとうございます。 ヘルプも読んではみたんですけど 私にはなかなか難しくて。。。 でもがんばって理解できるようにしたいと思います。 ありがとうございました!

その他の回答 (5)

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

列が各行で等しいなら、下記で出来ます。 式のネストをすると判り難いので、理解してもらうためにわざと別列(F,G列)に中間結果的な必要データを出します。また簡単にするため、2行で止めています。 (テストデータ) A1:E2に 1 2 3 4 5 6 7 8 9 10 (関数式) F1に=MOD(ROW()-1,5)+1 F2以下にF1を複写します。 1,2,3,4,5,1,2,3,4,5となります。 G1に=INT((ROW()-1)/5)+1 G2以下にG1を複写します。 1,1,1,1,1,2,2,2,2,2となります。 H1に=OFFSET($A$1,G1-1,F1-1) H2からH10までH1を複写します。 1,2,3,4,5,6,7,8,9,10と縦に並びます。 ・納得すれば、式をネストしてください。 H列で、F列、G列の式を組み合わせるわけです。 ・H列の$付きに注意してください。 ・10で止めていますが、いくらでも6万数千行まで増やせます。 ・5列が7列になったときどこを変えれば良いか判りますよね。

e3rin
質問者

補足

回答ありがとうございます。 おかげさまで出来ましたー! しかし・・・すみません。 せっかく分かりやすいようにと式を分けていただいたのですが、 どの関数も使ったことのないものばかりで、 どうしてこうなるのかがちょっと分かりませんでした。(>_<) お時間のあるときでかまいませんので 中身の解説をしていただけるとうれしいのですが。。。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.4

こんにちは。maruru01です。 どこかの列にいったん関数で表示し、後で値のみを貼り付けます。 (とりあえずH列とします) H1に、 =OFFSET($A$1,INT((ROW(J1)-1)/5),MOD(ROW(J1)-1,5),1,1) と入力し、下の行へコピーします。データ数分コピーして下さい。 上の数式は質問の例にあるように、横に5列のデータの場合に対応しています。他の列数の場合は、式中の2箇所の「5」を、その列数にして下さい。 コピーが終わったら、データ範囲を選択してコピーし、貼り付けたい場所に、[形式を選択して貼り付け]の[値]にチェックして貼り付けて下さい。

e3rin
質問者

補足

回答ありがとうございます。 おかげさまで出来ましたー! しかし・・・すみません。 どうしてこうなるのかがあまり理解出来ず、 特にJ1は何につかうのかが分かりませんでした(>_<) お時間のあるときでかまいませんので その説明もしていただけるとうれしいのですが。。。

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.3

範囲を選択して コピーします。 コピーしたのを秀丸とかエディタなどに 貼り付けます。 それで、タブを改行コードに置換します。 結果をコピーして 貼り付ければ いいでしょう。 ちなみに 秀丸を使う場合、 置換の正規表現にチェックを入れ、 検索を \t 置換を \n とすればいいです。

e3rin
質問者

お礼

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

  • kumikoara
  • ベストアンサー率31% (9/29)
回答No.2

ちょっと面倒かもしれませんが、とりあえず一つの方法としてご紹介します。 1)Excelファイルをテキストデータとして保存。 方法:「名前をつけて保存」をしますが、そのときに保存の形式を「テキスト(タブ区切り).txt」を選択します。 2)保存したテキストデータを開き、数字の区切りで改行し、上書き保存。 方法:上記データの場合、(1)(2)(3)と横並びになっていると思いますので、それを(1)改行(2)改行としてゆき、上書き保存をします。 3)新たにExcelファイルを作成し、外部データの取り込みを行う。 方法:Excelの新規作成をしたあと、「データ」→「外部データの取り込み」→「データの取り込み」を選択。取り込むデータを聞いてくるので、先程保存したテキストデータを選択します。「開く」ボタンを押すと、ウィザードが出てきますので、プレビューで確認しながら「次へ」ボタンを押してゆき、最後に「完了」ボタンを押すと、縦にデータが入っているはずです。 いちいちテキストデータ上で改行をしてゆかなければいけないのが面倒ですが、コピー&ペーストよりは楽かもしれません。 もし、取り込みたいExcelファイルが存在しているなら、(3)の過程で新規作成ではなく、取り込みたいExcelファイルを開いて「外部データの取り込み」でも可能ですが、すでにあるデータが崩れる可能性もあるので、一度新規作成で縦に並べてから、コピー&ペーストで取り込みたいExcelファイルに移した方が、安全かもしれません。 ご参考になさってください。

e3rin
質問者

お礼

参考にさせていただきます。 ありがとうございました!

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

その範囲をコピーして 貼り付けるときに 右クリックで、形式を選択して貼り付けとしてください。 そこで、行列を入れ替えるに チェックをつけて OKとすると、横のものが 縦になります。

e3rin
質問者

補足

さっそくの回答ありがとうございます。 すみません。ちょっと言葉が足りませんでした。 確かに1列づつやればその方法で出来ると思いますが、 何列もあるデータを1列にまとめたいのです。 よい方法がありましたら教えてください。

関連するQ&A