• ベストアンサー

エクセルのデータ整理方法について

マクロではなく、関数等でのやり方を教えて下さい。 今、以下のようなフォーマットで大量のデータがあります。 A1:名前   B2:クラス A2:○○君  B2:1組 A3:△△君  B3:2組 A4:■■さん B4:1組 A5:□□君  B5:3組 これを A1:1組   B1:2組   C1:3組 A2:○○君  B1:△△君  C2:□□君 A3:■■さん のように、クラス別で並べ替えたいと思っています。A2とA3の間に空白のセルができないように整理をしたいのですが、よい方法を教えて下さい。

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

  • ベストアンサー
noname#204879
noname#204879
回答No.3

[回答番号:No.1]の別解です。 「大量のデータ」の「大量」が 1000行と仮定します。 1.範囲 A2:A400 に次の[条件付き書式]を設定    数式が   =ISERROR(A2)    フォント色 白 2.範囲 A2:A400 を選択(アクティブセルは A2)した後、[数式バー]   にマウスカーソルを置いて、次の配列数式を入力して Ctrl+Enter   で確定    =INDEX(Sheet1!$A$1:$A$1000,SMALL(IF(Sheet1!$B$1:$B$1000=A$1,ROW(A$1:A$1000),""),ROW(A$1:A$1000))) 3.範囲 A2:A400 を右2列にドラッグ&ペースト 【お断り】解説は遠慮します。

その他の回答 (2)

noname#99913
noname#99913
回答No.2

B列をキーにソートして、あとはコピペで。 関数を入れる暇にやってしまえば、こちらが手っ取り早いかと。

TKO1983
質問者

お礼

回答ありがとうございます。データの更新作業が多いため、関数で組みたいところなので、フィルターなどはあまりしたくありません。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

データシートをSheet1、組別シートをSheet2に抽出しますのでSheet2の1行目は組名を入力して下さい。 Sheet2のA2に=IF(COUNTIF(sheet1!$B:$B,A$1)>=ROW(A1),INDEX(Sheet1!$A:$A,SMALL(IF(Sheet1!$B$2:$B$1000=A$1,ROW($A$2:$A$1000),9999),ROW(A1))),"")を設定、縦横に必要分コピーして下さい。 尚、配列数式の為、入力完了時にshift+ctrl+enterキーを同時押下して下さい。

TKO1983
質問者

補足

申し訳ありません。関数が理解できないため、後学のために解説して頂けないないでしょうか。

関連するQ&A

  • エクセルの重複データを整理する方法

      毎日の生産管理でエクセル2000を使用しています。 A列に製品名、B列に生産個数というように入力。 重複したデータが日替わりのように発生していますので、 あとでデータ整理するのが大変です。    A    B    C    D   ・・・・ 1 A製品  200 2 B製品  200 3 C製品  250 4 A製品  100 5 D製品  300 6 E製品  120 7 C製品  600 8 B製品   50 ・ 教えて!欲しいのは下記のように重複したデータ(製品名)の場合、 既存の製品の行の空白セルに生産個数を自動的に書き込み、整理する方法。    A    B    C    D ・・・・ 1 A製品  200  100 2 B製品  200  50 3 C製品  250  600 4 D製品  300   5 E製品  120   6  7  8 ・ いろいろ「エクセル 重複データ」に関する質問を検索したのですが、 これに当てはまる質問を見つけられず、意を決して投稿しました。 マクロ、VBAでも構いませんので、どうかご教授願います。 

  • 関数で整理したデーターを関数で再び整理させる。

     初めまして、よろしくお願いします。 一枚目のセルに入力されていくデーターを整理させる関数を組み込み、摘出されていくデーターがあります。 例)    A   B   C 1 123 2 124 3 125 4 126 5 #N/A 6 #N/A  のこデーターにC列に再び整理させる関数で指定範囲をしたところ。    A   B   C 1 123     #N/A 2 124     #N/A 3 125     #N/A 4 126     #N/A 5 #N/A    #N/A 6 #N/A    #N/A  となりました。これは数字を拾うのではなく、関数を拾って計算してしまうためにおこるのでしょうか。何かいい方法がありましたら、よろしくお願いします。

  • Excelにおけるデーター抽出

    Excelのシートに記載されている内容は次の通りです。 (1) セルA5~A60の間に1~56の昇順の番号 (2) セルB5~B60には氏名 (3) セルC5~C60には○、×、△の記号 このシートからC列が ○ の記号が付与されている者だけの氏名を別のシートのB7~B**の間に抽出するのですが、抽出したシートの行に空白ができないようにするには式をExcel関数で作成することは可能でしょうか? 若し、不可能でしたらマクロで行う場合のプログラムを教えて下さい。

  • excelのマクロで条件による行の挿入

    列AとBがあり列Aに学校のクラス名A組、B組、C組・・・(20クラスほど)と氏名が 入るエクセルシートがあるのですが 先頭行はA組から始まり5行区切りで数え、(A組も5行のうちに入る) その5行内に次のB組が入らないように空白行を挿入したいです もし、5行以内にB組がない場合、次の5行でまたB組があるか判定しなければ氏名5つ あれば空白をいれてというのを20クラスぶん作るマクロは可能でしょうか? VBAの知識がさっぱりないので途方にくれています。 元のデータの例   マクロ実行後 列A   列B      列A   列B A組           A組   氏名1 111      氏名1 111  氏名2 222      氏名2 222 B組           空白行挿入 氏名3 333      空白行挿入 氏名4 444      B組 氏名5 555      氏名3 333 氏名6 666      氏名4 444 氏名7 777      氏名5 555 C組 氏名6 666              氏名7 777              空白行挿入              空白行挿入              空白行挿入              空白行挿入              C組  

  • エクセルデータの置き換えについて

    大量のデータを置き換えしたいのですが、該当する関数はないでしょうか?  変更前 A  B  0   1 0  0 1 セルA のデータを セルB に置き換えることは関数でできるのでしょうか? セルBに入力がない場合はコピーしたくないため、単純に全てをコピーすることはできなくて困っています。 変更後(希望) A  B 0  0 0  0 1 そもそも 関数ではできないことでしょうか? よろしくお願いします。

  • Excel データの並び替え

    以下のようにする方法がないでしょうか? データベースのようにつかいたのです。 A列にデータをいれるとB列に自動で、 以下のようにならぶようにしたいです。 空白セルを飛ばし上から順番に並べかえたいのですが 方法はないでしょうか?不可能なのでしょうか? 可能でしたらB列にいれる数式、関数をおしえてください。    A  B  C 1  5  5 2  4  4 3  7  7  4     1 5  1  3 6 7  3

  • ExcelのIF関数を使って

    学校の成績一覧表を作っています。成績は◎、○、△の3段階でつけます。 一覧表の中に、◎と△だけをつければ、残りの空白セルには、マクロで○が入るようにしてあります。 Excelのバージョンは2003です。 しかし、クラスによって人数が違うので、自動的に○が入るようにしてあっても、どこまで入れたらいいのかは変わってきます。 そこで、氏名を入れるセルを参照し、「もし、このセルが空白だったら、その下のセルはすべて空白になる」というような関数を入れておけばいいのかなと考えました。が、その関数がわかりません。 どなたか、教えてもらえませんでしょうか?           C1  D1  E1  F1  G1・・・・・            伊   佐  鈴  山           藤   藤  木  田   B2   読む力    ○  ◎  △  ◎    B3   書く力     ◎  ○  ○  △ 分かりにくいでしょうが、上のような感じで作ってます。 上の場合、G1セルに名前が入っていないので、G2セルから下は、マクロでは○が入りますが、関数によって空白にしたいのです。 よろしくお願いします。

  • エクセルでデータが入っているか判別したい

    エクセルでデータが入っているか判別したい こんにちは 予期せぬ事態に困惑しています。 エクセルで大量(3000項目程度)のデータを、B1~B3000のセルに入れました。(これは、別のファイルから読み込ませたものです。) ちなみにこのデータは虫食いで色々なところに空白があります。 その為B1~B3000のどこににデータが入っているかを確認するためA1に =if(len(A1),1,"") と入れ連続コピーでA3000まで引っ張りました。(最終的にはvlookupで並び替えようと考えています) しかし、2000を越えたあたりで空白でも関係なく全て1が入るようになってしまいました。 これはエクセルの限界を超えたってことでしょうか? もし限界でしたら解決策を教えていただけませんか? (自分はマクロはほとんど使えませんので、マクロ以外解決できないのでしたら具体的なソースを乗せていただけると幸いです) ちなみに使用しているのはエクセル2003です。 よろしくお願いします。

  • 空白セルをデータと認識してしまいます

    Excel2003を使用しています。 「マクロの記録」を使って、あるリストを自動作成 しようとしているのですが、うまくいきません。 A,B2つの列に分かれたデータを連結させるため、 C列に「CONCATENATE」関数を入れて適当な行まで コピーします。(それ以上はデータが入らないだろうと思われる100行目ぐらいまで) その後C列をコピーし、「値貼付け」をして 関数を値に変えます。 そうすると、たとえば実際には20行目までデータが 入っていたとすると、21行目~100行目までは 空白になりますよね? でも、どうもその空白行もデータとみなされている ようなんです…。 Range("C2").End(xlDown).Row で下端セルを探そうとすると、100行目に なってしまいますし、「ジャンプ」で空白セルを 探しても、同じ結果になります。 空白セルを選んで一度「Delete」を押すと 正しく「空白」と認識するようなのですが…。 「実際にデータの入っているセルとそうでないセル」 を自動で判別させたいので、 簡単に「何も入っていないセルを”空白”と正しく 認識させる方法」はありませんでしょうか?

  • excelでデータを別シートに引っ張ってきたい

    excelで値を検索し、返す時、返す値の横にあるデータを違うシートのセルの下に一緒に引っ張ってきたいときの関数(方法)を教えてください。 素人なので分かりにくいと思いますが、お知恵をお借りしたいと思います。 あるデータのシートの検索値を別シートに持ってきたいのですが、シート1をシート2のようにしたいのです。 /は空白 例)シート1 /A B C D E 1(1) □ ○ ▽ ◎ 2 (2) ▼ ■ ◇ ◎ シート2 / A B C D 1 (1) □ 2 /○ ▽ ◎ 3 (2) ▼ 4 /■ ◇ ◎ 分かりにくいかもしれませんが、 シート1の(1)(A1)を検索すると、シート2(B1)に□(これはVLOOKで引っ張ってこれるのはわかります。) 次にシート1の(C1)○をシート2の(B2)へ持ってきたいのです。シート1(D1)(E1)はシート2の(C2)(D2)へ。 しかもシート1のC列は空白セルもあり、シート1のC列が空白の場合、下にずれることなくシート1の(D1)(E1)はシート2の(C1)(D1)へ。下記<図a>のようになるようにしたいのです。 そして、シート2のA列に検索値として入力する(1)や(2)の値は連番ではなく、(2)の次に(5)に飛んだりします。(2)の行のC列にデータがあっても、(5)のC列にデータはないこともあります。<図b> <図a> /A B C D 1 (1) □ ▽ ◎ 2 (2) ▼ ◇ ◎ <図b> / A B C D 1 (1) □ 2 /○ ▽ ◎ 3 (2) ▼ 4 /■ ◇ ◎ 5 (5) □ ▽ ◎ 6 (7) ▼ ◇ ◎ vlookとかCLUMN関数とか考えてはみたのですが、どうもうまくいきません。 毎回作成するデータなのですが、毎回コピペで作成しています。 とても面倒なので(1)を検索したらデータが一瞬で検索できるようにしたいと試みてはみたものの、私の知識では不可能でした。 関数では無理なのでしょうか。。。 関数はあまり詳しくないので分かりやすい方法があれば、教えていただければ助かります。 関数に詳しい方、よろしくおねがいいいたします。 関数にはこだわっていません。違う方法があればそれも含めておねがいいたします。

専門家に質問してみよう