• 締切済み

(Excel)複数列のデータを1列に

こんにちは. (1)のようなデータが20年分あり,(2)のように縦一列に変換したいのですが,よい方法はありませんでしょうか? 形式は同じですが,年によって行と列の数は変動します.シートは年毎です. 空白はブランクです.また,最終的にはブランクは削除します. No.1764958に類似する質問がありましたが,上手く使えませんでした. どうかよろしくお願い致します. (1) | 年月日 |A|B|C|・・・・ 1|2007/10/30|1|1|1| 2|2007/10/31| |1| | 3|2007/11/01|1| |1| 4|2007/11/02|1| | |   ・   ・   ・ ↓ (2) 1|2007/10/30|1|A| 2|2007/10/31| |A| 3|2007/11/01|1|A| 4|2007/11/02|1|A| 5|2007/10/30|1|B| 6|2007/10/31|1|B| 7|2007/11/01| |B| 8|2007/11/02| |B| 9|2007/10/30|1|C| 10|2007/10/31| |C| 11|2007/11/01|1|C| 12|2007/11/02| |C|   ・   ・   ・

みんなの回答

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.4

#02です =OFFSET($A$1,MOD(ROW(A1)-1,n),0) すみませんMOD関数のとじ括弧が抜けていました。上が正解です。

Wildlife01
質問者

お礼

うまく出来ました.OFFSETは使ったことがなく,とても勉強になりました.お忙しい中,ありがとうございました!

Wildlife01
質問者

補足

何度もすみません. ほぼ上手く出来たのですが,2列目だけ,一行上にずれてしまいます. もしよろしければ,もう一度返答いただけませんか? 自分には難しくて解決できずにいます.

  • tamago800
  • ベストアンサー率36% (4/11)
回答No.3

全体で何行くらいあるのでしょうか? あまり大量なら、マクロを使うのがベストです。 でももしマクロに抵抗があるなら、ピボットテーブルを使っても出来ます。ただ、若干手作業が発生しますが・・・。

Wildlife01
質問者

補足

回答ありがとうございます. n-junさんのところでもお伝えしましたが,1シートに1年分のデータが入っており,平均100行50列になります. マクロに抵抗はないのですが,自分で書き換えできないので,もしよろしければ結構なのですが,ピボットテーブルでの方法も併せて教えて頂けると大変助かります.あつかましいようで申し訳ありません.

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

元データのあるシートの任意のセルに次の式を貼り付けます。 式中の「n」はデータ最終行数に置き換えてください。あるいは「COUNTA($A:$A)-1」に置き換えても良いかもしれません。 (シートがどのようになっているか分からないので確実とは言えません) =OFFSET($A$1,MOD(ROW(A1)-1,n,0) その右隣のセルに同様に以下を貼り付けます。 =OFFSET($A$1,MOD(ROW(A1)-1,n)+1,INT((ROW(A1)-1)/n)+1) さらにその右隣に以下の式を貼り付けます。 =OFFSET($A$1,0,INT((ROW(A1)-1)/n)+1) 後はこれらの式を下方向にコピーします。

Wildlife01
質問者

補足

すばやい回答ありがとうございます. =OFFSET($A$1,MOD(ROW(A1)-1,n,0)のnを変えて式を入れてみましたが,関数に対して引数が多いといわれてしまいました.自分でもこれを参考にさせていただいて考えてみます.ありがとうございます!

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

>(1)のようなデータが20年分あり 行数と列数はどの位あるのでしょうか? >No.1764958に類似する質問がありましたが,上手く使えませんでした. マクロを応用できなかったのでしょうか? 或いはマクロを使った事がないと言う事でしょうか?

Wildlife01
質問者

補足

回答ありがとうございました. >マクロを応用できなかったのでしょうか? >或いはマクロを使った事がないと言う事でしょうか? マクロの知識はないのですが,似たケースだったのでそのまま試してみたといった状況です. データは1シートに1年分入れており,平均100行50列ぐらいになります.

関連するQ&A

  • [EXCEL2000]複数の列からデータを取り出して1列にまとめたい!

    (1)一行にA列、B列、C列があります。 (2)各行のどれか1つの列には、必ずデータが入っています。 (3)データの入っているセルからデータを取り出し、D列の同じ行のセルに移します。(コピーでもかまいません) (4)結果、D列には、A列~C列のデータが1列にまとまる! 具体的には↓のようになりますが、どのような関数を使えばよいですか?教えてください。 (具体例) A列 B列 C列 D列 12         12        50  50      32     32

  • excel2003で複数条件

    A列にA~Gのアルファベットかブランク、B列に数字(0~5)かブランクが入っています。 A列にアルファベット、B列に0が入っている行を抽出し、 A列とB列がAと0、BとO、CとO・・・の行がそれぞれABCごとに何個あるかカウントしたいのですが、 どのような論理式を作ればよいでしょうか? なおexcel2003を使用しておりますのでcountifとsumproductは使うことはできますが、countifsを使うことはできません。 よろしくお願い致します。。

  • 複数列のデータを1列にまとめるには?

    複数列のデータを1行にまとめるにはどうすればいいのでしょう? A2からZ32までデータが入っており それを一列にまとめたいのです。 お願いします

  • Excel2000での列集計

    過去の質問では見つからず、初めて質問させていただきます 【質問】 Code1 Code2 Name 1 2 3 4 5 6 7~               月    ~   日 月    ~   日 a1   111  あ    A A            A a1   111  あ                 B B a1   111  あ      C C C      C a2   222  い                   A A a2   222  い    B B a2   222  い      C C          C C a2   222  い                   D a3   333  う    A A a3   333  う                 B   ・   ・ 上の1年分のデータ表を下記のような週毎に月曜日のみ残した表にその週にあるデータ(文字列)を月の列に集め、空白の行は上に詰めて表示させ、詰めたことによって全ての月曜日の列(1年分)にデータの無い行は削除したい Code1 Code2 Name  1  8 ~                月 月 a1   111  あ     A A a1   111  あ     C B a1   111  あ       C a2   222  い     B A a2   222  い     C C a2   222  い       D a3   333  う     A B   同人の行の中ではひとつの行には同じデータしかない "あ"の3行はA行B行C行になっています "い"の4行中には、またABCそれぞれの行があり加えてD行もある "う"の行はAとBのみなので行が少ない 関数でも試したのですが無理で、マクロでしかできないのではと思っています。 マクロは良く分からないのでお分かりになる方教えて下さい。お願いします。

  • Excel2007 複数列に対する抽出条件の設定

    Excel2007を使用しています。 下記のような抽出をVBAで行いたいのですが、条件の指定方法が分からず困っています。 ご存知の方がいらっしゃいましたら、ご教授願います。 A列 B列 C列 D列 1   あ  22 2   い      全 3   う   21  部分 4   え   22 5   お   6   か   23  部分 7   き   22 8   く    21  全 9   け 10  た   22  部分 11  ち ↓↓↓↓↓↓ A列 B列 C列 D列 1   あ  22 2   い      全 3   う   21  部分 4   え   22 6   か   23  部分 7   き   22 8   く    21  全 10  た   22  部分 【やりたい事】 C列が空白かつD列が空白の行を削除したい。 ※A列B列は連番や続いた文字が入っているのではないのですが、便宜上こう書きました。 ※C列には数値、D列には文字列が入っています。 宜しくお願い致します。

  • EXCEL2003の複数条件でのデータ表示方法

    下記のような管理表があり次のような条件でデータを表示させたいと思っております。 ・A列が「1」のとき、B列が「有期契約」だった場合、「有」と表示                 「無期契約」だった場合、「無」と表示 ・Aが「空白」だった場合は、B列に「空白」を表示 ・Aが「*」だった場合は、B列に「空白」を表示 ・下記B列は3行一セットになってます(例:「有期契約」なら3行とも「有期契約」が表示されている) ・上記条件をふまえ、下記C列のように、B列3行を見たときにC列に一つだけ値を表示させたい。 とりあえず下記のような関数を作成してみましたが、B列から一つだけ表示させる方法が分からず お手上げです・・・ =IF(A2="","",IF(A2="*","",IF(A2="1",IF(B2="有期契約","有","無"),""))) 丸投げのようで申し訳ございませんが、皆様のお知恵を借りたく、よろしくご教示お願い致します。 A         B        C      契約種別  契約分類   ----------------------------------------------- 1       有期契約      有 2       有期契約 1       有期契約 ------------------------------------------------ 2       無期契約      無 2       無期契約 1       無期契約 ----------------------------------------------- 1       有期契約      有         有期契約 *       有期契約 ------------------------------------------------

  • excelで、2列のデータを1列に纏めたい

    セル A2=1、B2=あ、 A3=2、B3=い、 A4=3、B4=う、…と数十行繰り返されたデータがあるとします。 これを、 C2=1、 C3=あ、 C4=2、 C5=い、 C6=3、 C7=う、…と順番に一列に纏めたいと思います。 計算式を入れて簡単なコピー操作で纏めることはできますでしょうか? よろしくお願いいたします。

  • Excel関数について

    A列の1行目に A C D F X のデータが入ってきます。 B列の1行目に 0 1 2 9 T V のデータが入ってきます。 条件はA列の1行目がAまたはFでB列の1行目が0の場合は10% 条件はA列の1行目がAまたはFでB列の1行目がTの場合はブランク 条件はA列の1行目がDの場合はブランク 条件はA列の1行目がXの場合は100% 上記以外は0% の条件を満たすための関数の設定の仕方を教えてください。

  • Excel2003でのVBA

    WindowsXPでExcel2003を使っています。 Excelにある表をマクロを使って編集したいと思ったのですが、セルの選択の設定で教えてほしい事があります。 まず、横A列~F列、縦1行~6行までの表があります。 A1セルは、空白。 B1セル~F1セルには、1~5の数字が入っています。(見出しなので全て入ってます。) A2セル~A6セルには、a~eのアルファベットが入っています。(見出しなので全て入ってます。) 表の中のデータは、ところどころにしか入っていなくて、全て埋まっていません。 また、横A列~F列というのは固定なのですが、縦1行~6行までという行数は変動します。 この表で、A2セルからF6セルまでを選択したいのですが、行が変動するのでA6とかF6とかでは指定できません。 Range("A2").Select Selection.End(xlDown).Select これで、A2セル~一番下の行(ここではA6セル)まで選択した後、F列まで(列の数は固定です。)選択するにはどうしたらよいのでしょうか? 右下のセルは、空白なので困っています。 Range(Selection, Selection.Next).Select こんなものを考えましたが、これでは一つ右隣しか選択できません。 これを少しいじればいいのではないかと思うのですが、全然違う方法でもかまいません。 どなたか教えていただけないでしょうか? 宜しくお願いします。

  • [EXCEL]AVERAGEでブランクを飛ばした計算式

    みなさん、こんばんは。 [EXCEL]AVERAGEでブランクを飛ばした計算式を教えてください。 よろしくお願いします。 まず A列1~13に 10 20 30 40 50 60 (空白/ブランク) 10 20 30 40 50 60 と数字が入っています。 B列6行に =IF(A6="","",AVERAGE(A1:A6))と式を入れ、この式をB列13まで延ばすと、 B列6~13は 35 38 36 34 32 30 35 となります。 私の希望は7行目のブランクを無視して数字があるところだけを指定範囲(今回は範囲は6行)計算したいのです。 結果としてB列6~13は 35 35 35 35 35 35 35 となるのが希望です。 B列6、13は、連続していますので、そのままの平均なので35ですが、 他はブランクがありますので、そのブランク1つ分を計算範囲に入れず、 範囲先頭部分をひとつ増やして計算させたいのです。 B列8ならA7を除く、A2~A6,A8の平均(AVERAGE(A2:A6,A8)) B列10ならA7を除く、A4~A6,A8~A10の平均(AVERAGE(A4:A6,A8:A10)) という感じにです。 よろしくお願いします。

専門家に質問してみよう