• ベストアンサー

Excel 1行を複数列に書き出す

表Aは数社の価格比較表で、C列が社名、D列が価格 (E列以下同様) です。 シート1の表Aからシート2に表Bを作りたいです。 関数の方がいいですが、できなければマクロでもいいです。 (表A) A B C D E F G H I J K L M N O P Q R S T U V 1 製品1 2009/3/1 A社 120円 B社 110円 C社 150円 D社 130円 2 製品2 2009/3/15 Z社 20円 M社 50円 3 製品3 2009/3/10 M社 130円 4 製品4 2009/3/5 L社 90円 F社 120円 X社 150円 5 製品5 2009/3/1 K社 190円 6 製品6 2009/3/4 S社 10円 A社 80円 7 製品7 2009/3/8 (表B) A B C D E F G H I J K L M N O P Q R S T U V 1 製品1 2009/3/1 C社 150円 2 (BLANK) (BLANK) D社 130円 3 (BLANK) (BLANK) A社 120円 4 (BLANK) (BLANK) B社 110円 ○ -------------------------------- 5 製品2 2009/3/15 M社 50円 6 (BLANK) (BLANK) Z社 20円 ○ -------------------------------- 7 製品3 2009/3/10 M社 130円 ○ -------------------------------- 8 製品4 2009/3/5 X社 150円 9 (BLANK) (BLANK) F社 120円 10 (BLANK) (BLANK) L社 90円 ○ (説明と条件) ・表Bの(BLANK)は、空白セルになります。 ・表Aの1行あたりの会社の数は決まっていませんが、とりあえず最大10社にしています。 ・表Bでは、表Aにおける1行ごとの価格の高い順に並べていますが、できなければ、Aの表と同じ会社の順序で並べても構いません。 ・表BのE列は、表Aにおける1行ごとの最安値に○をつけています。 よろしくお願いします。

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

  • ベストアンサー
  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.1

完全に希望の形にするためにはマクロでも組まないと無理だと思います。 参考までにこんな方法もと言う事で。 A1に =INDEX(一覧表!A:A,INT((ROW()-1)/10)+1) B1に =VLOOKUP(INDEX(一覧表!A:A,INT((ROW()-1)/10)+1),一覧表,2,0) C1に =VLOOKUP(INDEX(一覧表!A:A,INT((ROW()-1)/10)+1),一覧表,1+2*RIGHT(ROW()),0) D1に =VLOOKUP(INDEX(一覧表!A:A,INT((ROW()-1)/10)+1),一覧表,2+2*RIGHT(ROW()),0) C1:D1を選択して下方向9行目までフィル C10に =VLOOKUP(INDEX(一覧表!A:A,INT((ROW()-1)/10)+1),一覧表,21,0) D10に =VLOOKUP(INDEX(一覧表!A:A,INT((ROW()-1)/10)+1),一覧表,22,0) A1:D10までを選択して下方向にフィル オートフィルターでC列またはD列で0以外を選択 最安値の抽出ですが元表の価格の書式設定によってはややこしい計算が必要になりますので、作っていません。 オートフィルターを掛ける前の状態で自分で考えてみてください。

buzhidao
質問者

お礼

ありがとうございます。(^^) 関数でここまでできるのですね。すごいです。 これを参考にもう少し表の形式や方法を考えたいと思います。

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

その他の回答 (2)

noname#204879
noname#204879
回答No.3

前に出た「エクセル 関数 条件にあったセルを表示したい」という質問( http://oshiete1.goo.ne.jp/qa4757078.html )にそっくりですが、そこの[回答番号:No.5](マクロ音痴の私の回答)のようなもので良ければアップします。しかし、前質問者のようにマクロをお好みなら、私のこのコメントは無視してください。 貴方に無益な回答はしたくありません。

buzhidao
質問者

お礼

ありがとうございます。

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

はじめまして 各行の会社の数が変化しますので関数では難しいと思います。 マクロならできます。 データの並べ替えの部分のプロクラムは以下のようになります。プログラムといっても、手作業でやることをそのまま書いただけです。 条件は ・Sheet1(元データ)とSheet2(並べ替えの出力先)が存在している ・データは1行目から始まり、途中に空白行はない ・会社と価格のデータは、C列から始まり、途中に空白列はない です。 …Sheet2のB列は後で書式を「日付」に直してください。 Sub test() Dim R As Long Dim C As Long Dim Line As Long ThisWorkbook.Activate Sheet2.Select Line = 1 For R = 1 To Sheet1.[A1].End(xlDown).Row Cells(Line, "A") = Sheet1.Cells(R, "A") Cells(Line, "B") = Sheet1.Cells(R, "B") For C = 3 To Sheet1.Cells(R, "C").End(xlToRight).Column Step 2 Cells(Line, "C") = Sheet1.Cells(R, C) Cells(Line, "D") = Sheet1.Cells(R, C + 1) Line = Line + 1 Next C Next R End Sub

buzhidao
質問者

お礼

ありがとうございます。(^^) こんな短いマクロでできるのですね。 これを参考にもう少し表の形式や方法を考えたいと思います。

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

関連するQ&A

  • エクセル、任意の「行」だけを抽出したい。

    こんなことできますか? A1:F100のセル内にランダムに数字が入っています。 質問1) この中から 1行目→3行目→5行目と一つ飛ばしで入っているデータを抽出してH1:M100の範囲内に表示させるにはどのような操作をすればいいのでしょうか?関数とかで簡単に抽出表示させる技とかあればいいのですが・・・。 A1-B1-C1-D1-E1-F1 A2-B2-C2-D2-E2-F2 A3-B3-C3-D3-E3-F3 A4-B4-C4-D4-E4-F4 A5-B5-C5-D5-E5-F5 A6-B6-C6-D6-E6-F6 A7-B7-C7-D7-E7-F7 ・・・ A100-B100-C100-D100-E100-F100 の中から A1-B1-C1-D1-E1-F1 A3-B3-C3-D3-E3-F3 A5-B5-C5-D5-E5-F5 ・・・ を抽出して H1-I1-J1-K1-L1-M1 ・・・ H100-I100-J100-K100-L100-M100 の範囲内に表示させたいです。 質問2) 同様に、 1行目→4行目→7行目と二つ飛ばしで入っているデータを抽出してO1:T100の範囲内に表示させるにはどのような操作をすればいいのでしょうか?関数とかで簡単に抽出表示させる技とかあればいいのですが・・・。 ※ 説明がわかりにくいかもしれませんが、よろしくお願いします。

  • エクセル 複数行ある同一商品を1行にまとめるには?

    同一内容が入力された複数行の合計を出す方法を教えてください。     エクセルの表でA列に商品名、B列に色の種類、C列~E列にサイズごとの個数がある、まったく同じ商品が、複数行にランダムに掲載されています。 A列、B列で同一の情報を持つ商品について、C列~E列のサイズごとの合計を出したいのです。 例)商品名、色、サイズ個数(C列:Sサイズ、D列:Mサイズ、E列:Lサイズの順です。) A1:Tシャツ B1:ホワイト C1:5 D1:4 E1:3   A2:Tシャツ B2:ブラック C2:3 D2:5 E2:5 A3: Tシャツ B2:ホワイト C3:3 D3:3 E3:2 A4: Tシャツ B2:ブラック C4:3 D4:2 E4:3 各商品が300行程あり、オートサムではやりきれません。 すべての各商品(A列、B列が一致するもの)を1行ごとにまとめたシートを作成するにはどうしたら良いでしょうか?

  • エクセルで列を複数行にしたいのですが

    注文表を商品ごとに集計したいのですが、商品名・数が列の入っています。これを縦にして集計しようと思っているのですが、列を行する方法を教えてください。 エクセルの表で列A・Bを共通にして列C・Dを次の行に、そして列E・Fを次の行にとしたいのですが、教えてください。 列A 列B   列C  列D 列E 列F 001 ○○会社 商品A 10  商品F 14 001 ○○会社 商品C 11  商品A 20 005 ××会社 商品D 32  商品C 25 これを 列A 列B   列C  列D 列E 列F 001 ○○会社 商品A 10  001 ○○会社 商品F 14  001 ○○会社 商品C 11  001 ○○会社 商品A 20  005 ××会社 商品D 32  005 ××会社 商品C 25 よろしくお願いいたします。

  • Excelで、行の組み換えについて

    A列からG列までデータが入っているリストがあるのですが、 例えば、1行目から50行目までと、51行目から100行目までを交互に組み入れるには どのようにすればよいでしょうか。   A B C D E F G 1 2 3 ・ ・ ・ 51 52 53 ・ ・ ・ といったものを、   A B C D E F G 1 51 2 52 3 53 ・ ・ ・ のようにしたいのですが、一気に操作できる方法があれば 教えていただきたく、よろしくお願いいたします。

  • エクセルで1行おきの数字を合計する

    エクセルで作られた表があります。たとえば 列 A B C D  E F G ・ ・ M  計1 計2   6 8 9 10 5 7 9 ・ ・ 9 計1の欄に=A+C+E+G+・・・+Mとひとつおきに足したいのですが、簡単な式がありましたら教えてください。わかりにくい質問ですみませんが、よろしくお願いします。

  • エクセル マクロでセルを自動移動

    例1のようになっているエクセル表があります。 データは右方向、下方向へ増えます。 Cの列以降は4つ単位でしかデータは増えません。 それを例2の表のように列A,Bのデータはそのままに Cの列以降の4つのセルを区切りに下の行に移動して、 空白の列まで言ったらA2の行以降を最後の行まで繰り返しするという マクロを書くことは可能でしょうか。 出来ましたらそのマクロを教えてください。 例1 A1 B1 C1 D1 E1 F1 G1 H1 I1 J1 K1 L1 M1 N1 A2 B2 C2 D2 E2 F2 G2 H2 I2 J2 A3 B3 C3 D3 E3 F3 G3 H3 I3 J3 K3 L3 M3 N3 例2 A1 B1 C1 D1 E1 F1 A1 B1 G1 H1 I1 J1 A1 B1 K1 L1 M1 N1 A2 B2 C2 D2 E2 F2 A2 B2 G2 H2 I2 J2 A3 B3 C3 D3 E3 F3 A3 B3 G3 H3 I3 J3 A3 B3 K3 L3 M3 N3

  • EXCEL

    A-B-C-D-E-F-G 1-A-W-A-1-B- 2-B-A-N-2-C- 3-C-K-A-3-B- 4-D-A-I-4-E- 5-E-R-X-5-A- 例えば,エクセルで表のようになっている場合に, 列AにF1の値(表の場合は文字B)で検索をかけ,検索に該当した行(表の場合では行2)の列Dの値をG1に表示する方法はあるでしょうか?? 簡単に言うと,列Gに自動的にFに対応するDの数値を入力したいのです.自動的に列Gを下の表のようにすることは可能でしょうか? A-B-C-D-E-F-G 1-A-W-A-1-B-2 2-B-A-N-2-C-3 3-C-K-A-3-B-2 4-D-A-I-4-E-5 5-E-R-X-5-A-4 投稿すると文字がずれてしまって表が見難くてすいません. どなたか,ご教授よろしくお願いします.

  • Excelでマクロを使用した削除に関して

    マクロ初心者です。 Excelにて、以下のような表データがあるとします。     A列 B列 C列 D列 E列 … 1行      51  50  52  51    2行  50  a   b   c   d 3行  51  e   f    g   h    4行  52  i    j    k   l この表の中で、A列と1行目の値が同じになる交点となるセルの値"以外"を 削除して以下のように表示させたいのですが、 その方法がわかりません。     A列 B列 C列 D列 E列 … 1行      51  50  52  51    2行  50      b       3行  51  e          h    4行  52          k    単純な行削除・列削除ではないため、 頓挫しています。お知恵を拝借したく、よろしくおねがいします。

  • 2行のセルの入れ替え。

     初めまして、よろしくお願いします。  セルに A B C D E F G H I J K L 1 a b c d e f 2 g h i j k l 3 m n o p q r 4 s t u v w x 5 " ・ " ・ " ・ " 100 "  という表があります。これを A B C D E F G H I J K L 1 a b c d e f g h i j k l 2 m n o p q r s t u v w x 3 " 4 " 5 " ・ " ・ " ・ " 100 "  という風に、偶数行のデーターを奇数行の後ろにつけるようにしたいと思います。無理ならば奇数行だけのデーター、偶数行だけのデーターとなるように、何かよい方法を教えて頂きたく、よろしくお願いします。

  • 複数行ある同一項目内容を一列に並べたい(excel

    教えていただきたいのはexcel(2000)に関する次の内容です。 下記のようなA表があります。 A1:Lot, B1:項目a, C1:項目b, D1:項目c, E1:項目d, A2:S01,B2:kita, C2:10, D2:100,E2:50, A3:S01,B3:minami, C3:4, D3:8, E3:50, A4:S02,B4:kita, C4:5, D4:25, E4:60, A5:S02,B5:nishi, C5:2, D5:4, E5:60, A6:S02,B6:higashi, C6:3, D6:6, E6:60, 以下、50行くらい続く。A列のLotの連番がふえていく。同じ連番は1個から4個ある(項目aの数だけ)。項目dは同連番では同じ数値が入る。 そして別のシートに下記のB表があります。 A1:Lot, B1:項目a(kita), C1:項目b(kita), D1:項目c(kita), E1:項目a(minami), F1:項目b(minami), G1:項目c(minami), H1:項目a(kita), I1:項目b(kita), J1:項目c(kita), K1:項目a(nishi), L1:項目b(nishi), M1:項目c(nishi), N1:項目a(higashi), O1:項目b(higashi), P1:項目c(higashi), Q1:項目d, A2:S01, A3:S02, A4:S03, A5:S04, 以下、A列にはLotが1個ずつ入っている。(ソート済み)B列以降の2行以降はA表からの参照値が入る。 このとき、A表からB表を完成させるためにB表のB列以降の2行以降に入れる数式は何でしょうか。 出来るとすれば数種の関数の組み合わせなのでしょうが、思いつきません。 数式で不可能であれば、excelマクロ、またはaccessでも。 よろしくお願い致します。

専門家に質問してみよう