• ベストアンサー

エクセルの並べ替えについて

noname#35109の回答

noname#35109
noname#35109
回答No.2

マクロですがこんなのはどうでしょう。 データのあるシートをアクティブにした状態(見ている状態)にして, 下のマクロを実行させれば, 「NewData」というシートが作成されて,そこに並び替えられたデータが作成されます。 --------------------------------- Sub エクセルの並べ替え()   'アクティブシートの記録   Set ASheet = ActiveSheet   r = 0   c = -1   ' NewDataというシート名シートが無ければ   ' NewDataというシート名のシートを作成   On Error Resume Next   Sheets("NewData").Select   If Err.Number <> 0 Then    Err = 0    Sheets.Add.Name = "NewData"   End If   'On Error GoTo 0   ' ii は ASheetのA列の最終行   ii = ASheet.Range("A65536").End(xlUp).Row      ' NewDataシート に並べ替え   For i = 1 To ii     If ASheet.Cells(i, 1).Value <> ASheet.Cells(i - 1, 1).Value Then       r = 1       c = c + 2       Sheets("NewData").Cells(r, c).NumberFormatLocal = "m/d"       Sheets("NewData").Cells(r, c).Value = ASheet.Cells(i, 1).Value       Sheets("NewData").Cells(r + 1, c).Value = ASheet.Cells(i, 2).Value       Sheets("NewData").Cells(r + 1, c + 1).Value = ASheet.Cells(i, 3).Value       Else       c = c       r = r + 1       Sheets("NewData").Cells(r + 1, c).Value = ASheet.Cells(i, 2).Value       Sheets("NewData").Cells(r + 1, c + 1).Value = ASheet.Cells(i, 3).Value          End If   Next i End Sub ----------------------------------- 最初のデータが A1 セルから始まっている時のみ, 上のマクロは使えます。    A   B   C 1 3/10 AA  500 2 3/10 BB  500 3 3/11 AA    10 4 3/11 CC  500 もしタイトル行が上にある場合,    A   B   C   日付 品名 数量 1 3/10 AA  500 2 3/10 BB  500 3 3/11 AA    10 4 3/11 CC  500 つまりこんな場合↑は   ' NewDataシート に並べ替え   For i = 1 To ii の For文の 1 を 2 にしてください。 つまりこうなります↓。   For i = 2 To ii 他の場合のカスタマイズはちょっと難しいと思います。 ////////////////////////////////////////////////////////////////////// マクロの登録方法や使用方法がわからないかもしれないので, 念のため書いておきます。 ~~マクロの作成方法~~ [ツール] メニュー→ [マクロ]→[マクロ]でマクロダイアログボックスを出します。 [マクロ名] ボックスに、「実行するマクロの名前」 (つまり エクセルの並べ替え )を入力し,「作成」をクリック Visual Basicエディタが開くと,Module1に ---------------------- Sub エクセルの並べ替え() End Sub ---------------------- がすでに用意されていると思います。ここを ---------------------- Sub エクセルの並べ替え()   'アクティブシートの記録   Set ASheet = ActiveSheet    … … …   ~ 省略 ~ End Sub ---------------------- のように書きかえ,一旦Visual Basicエディタを閉じます。 これでマクロの作成は終わりです。 ~マクロの実行方法~ 方法1 ショートカットから実行 再び[ツール] メニュー→ [マクロ]→[マクロ]でマクロダイアログボックスを出します。 [マクロ名] ボックスの下にある大きなボックスから 「実行するマクロの名前」を選択し「オプション」を選択し, マクロオプションダイアログボックスから ショートカットキー 「Ctrl」+「任意のキー」でショートカットを登録すれば, 次回からこのショートカットキーでマクロが実行されます。 「任意のキー」は P A C Z など日頃自分が使われているキーは避けた方が良いです。 方法2 画像から実行 自分で書いた絵やネット上のボタン画像や写真もマクロ実行のボタンとして使用できます。 ボタンにしたい画像を右クリック→「マクロの登録」で 「実行するマクロの名前」を選択→「OK」で マクロ実行ボタンの完成です。 その他,ツールバーのフォームから ボタンを作って,そのボタンにマクロを登録するなど, 色々な方法があります。

ran1691
質問者

お礼

丁寧な回答ありがとうございます。 早速 マクロ部分をコピーしてやってみました。 思ったものに近いものが出来ました。 あと少し手を加えたいのですが マクロが今ひとつわからなくて・・・。(^_^; はじめ このマクロもコピーして言われていると折りしたはずなのに コンパイルエラーなど出てお手上げかと思ったら 出来た。結果オーライか? 少し勉強したいと思いますが・・・。 なんか マクロの初歩でいいサイトなどありますか? ご紹介いただければありがたいのですが。

関連するQ&A

  • シート1とシート2のデータ一致 抽出方法

    エクセルのデータ抽出でお知恵をお貸し下さい。 シート1 A列  B列     C列 品名  製品番号  数量 AA    1AAAA    200 BB    1BBBB    250 CC    1CCCC    300 シート2 A列   B列     C列 品名  製品番号   数量 AA    1AAAA   200 BB    1BBBB   250 AB    AAAA    500 CC    1CCCC   300 上記のようなシートがあります。 内容は同じなのですが、シート2にはシート1にはない品名、製品番号、数量が含まれます。 シート1の品名、製品番号、数量がすべて一致するものをシート3へ抽出し、 一致しなかったデータ(シート1にはなく、シート2にあるものを含め)をシート4へ抽出したいのですが 何か良い方法はないでしょうか??

  • エクセルで複数列を二列にまとめる

    エクセルのデータ成形に、知恵を貸していただけますでしょうか・・・ エクセルで以下のようなデータがあります(例では8行8列) コードは本当はランダムです。 #と右下の部分は空白セルです。横には数字、コード、数字、コードの並びで、数字は一行目のみです。 1 aa-1 2 bb-1 3 cc-1 4 dd-1 # aa-2 # bb-2 # cc-2 # dd-2 # aa-3 # bb-3 # cc-3 # aa-4 # bb-4 # aa-5 # bb-5 # aa-6 # aa-7 # aa-8 これらを 1 aa-1 1 aa-2 1 aa-3 . . 2 bb-1 2 bb-2 . . 4 dd-2 というように 1. 複数の列を2列ずつのグループで2列にまとめ 2. それぞれのグループごとに各コードの左のセルにグループの数字をつけたい   (どのコード(aa-1など)がどの数字グループなのか分かるように) と思っています。 なにかいい方法はありますでしょうか。 調べてはみたのですが、 複数列を一列ではなく、二列ずつまとめていることや、 各列の長さが一様ではないことなどから 各所で紹介されている方法が適用できないでおります。 VBAもほとんど使ったことがないので、それらを応用できません。 どうぞ知恵を貸していただけたらと思います。 よろしくお願い致します。

  • Excelのマクロを作ってもらえますか?

    こんにちは。 エクセルのマクロで、Sheet1に転々と 入力されているデータを すべてA1の列へ統一して並べ替え(2) 同じデータの数を計算してB2へ記述する(3)などという マクロができるなら作っていただけないでしょうか? もし、数の入った行のみ残して削除までできれば最良なの ですが(4) (2) AA-20 AA-20 AA-20 BB-30 CC-30 CC-30 CC-30 (3) AA-20   3 AA-20 AA-20 BB-30   1 CC-30   3 CC-30 CC-30 (4) AA-20   3 BB-30   1 CC-30   3 このようになのですが、 お時間のあるときで結構ですので宜しくお願いします。

  • エクセル2003のVBAを教えて

    エクセル2003のVBAを教えてください。 次の対象データで、(1)(2)(3)の作業が出来るエクセルVBAを教えて下さい。 (1)(2)(3)個々のVBAでお願いします。 ●対象データ:種類(A列)、文字(B列)、    データの行数:不特定なので、データのある最終行までとします。 ●教えていただきたい項目  (1):種類だけを(C列)に取り出す。  (2):種類の先頭に空白の行を3行入れて、追加の2行目の種類(A列)に文字(B列)を入れる。  (3):種類が5行以上あるときは、5行ごとに空白行を追加する。 ●対象データ 種類(A列)   文字(B列) AA       あああ BB       いいい BB       いい BB       いいい CC       うう CC       うう DD       ええええ DD       ええええ DD       ええええ DD       ええええ DD       ええええ DD       ええええ DD       ええええ ●(1)のVBAの結果(このようになるVBAを教えてください。) (C列) AA BB CC DD ●(2)、(3)のVBAの結果(このようになるVBAを教えてください。) 種類(A列)    文字(B列) あああ AA        あああ いいい BB        いいい BB        いいい BB        いいい うう CC        うう CC        うう ええええ DD        ええええ DD        ええええ DD        ええええ DD        ええええ DD        ええええ DD        ええええ DD        ええええ

  • Excel 複雑なセル埋めのVBA

    エクセルで入力済みのデータをテーブル形式にするためにVBAを組んでいますが突き当たりました、お知恵を拝借させてください。現在成形出来ているのは以下の状態です。    A列     B列    C列 1行  AA      2     1 2行 3行  BB      3     2 4行 5行 6行 7行 8行 9行  CC      2     3 10行 11行 12行 13行 14行 これを以下のようにB列を埋めたいと考えています。A列を埋めるVBAは当方で分かります。      A列    B列    C列 1行    AA     1     1 2行    AA     2 3行    BB     1     2 4行    BB     2 5行    BB     3 6行    BB     1 7行    BB     2 8行    BB     3 9行    CC     1     3 10行   CC     2 11行   CC     1 12行   CC     2 13行   CC     1 14行   CC     2 B1に2が入っていてC1に1が入っているときはB1から下へ1,2の連番を1回入れます、B3に3と入っていてC3に2と入っているときはB3から下へ1,2,3の連番を2回繰り返します、同じようにB9以降も処理しています。連番のスタートは必ず1で、現在B列に入っている数字が連番の最後に当たる数値でC列が繰り返し回数という事です。上の例ではB列を書き直していますが、新たにD列にB列に入れたい連番の列を作る方法でもいいと思っています。 もし表が崩れていたら済みませんでした。恐れ入りますがポインタでも結構ですのでご教授下さい、よろしくお願いします。

  • calcの計算式について

     A列 B列 1 aa 500 2 bb 210 3 cc 140 4 aa 520 5 cc 140 6 bb 20 7 cc 420 ・ ・ という100行ぐらいのデータの aa bb ccごとの合計を出す場合は どのように計算すればいいでしょうか? 例えばaaの合計は1020です。 よろしくお願い致します。

  • エクセルで、規則性はあるのですが、数字と文字が混在しているものを重複しないように抽出したいのですが。

    エクセルで、シート1に列A(数値)と列B(文字列)を結合したものが、 列C(列A&列B)であります。 これをシート2で列Cの文字列が重複しないように抽出したいのです が、どうしたらよいのでしょうか? シート1     列A  列B  列C 行1  項目A 項目B 項目C 行2  2   CC  2CC 行3  3   AA  3AA 行4  5   BB  5BB 行5  7   PP  7PP 行6  2   CC  2CC 行7  5   AA  5AA これをシート2で、     列C 行1  項目A 行2  2CC 行3  3AA 行4  5BB 行5  5AA 行6  7PP このように重複するものを統合した形でまとめたいのですが、 わかるかたがいれば教えてもらえないでしょうか?

  • エクセルで

    エクセルである1列に入力されてる文字の中で同じ値の数を数えたいのですが。 例えば     A列  B列   1 aa 2 bb 3 cc 4 aa 5 cc ・ ・ ・ 100 bb といった表で「aa」「bb」「cc」等、その列に入力されているすべてのデータのそれぞれの数を一度に表示させることは可能でしょうか? 分かりにくくて申し訳ありませんが詳しい方がいらっしゃいましたらよろしくお願い致します。

  • エクセルのピボットテーブルで

    ピボットテーブルの表示方法についてです。 表の品名と数量からピボットテーブルを作成します。 行に品名、データ部に数量を表示させるのですが、数量が0(ゼロ)の場合には、その行自体を表示させない様にしたいのです。 元の表の方は変更等出来ないので、ピボットテーブルの方で何とか出来ないかと思います。 【元の表】 品番  数量 A001  5,000 A002    0 B001  4,500 B002    0 上記の2列からピボットテーブルを作成すます。 【ピボットテーブル】 品番  数量 A001  5,000 B001  4,500 総計  9,500 上記の様に、元の表で数量が0なら、その品番と数量の行が表示されない様にです。

  • excel データ抽出方法

    こんいちは 列1と列2を比べて条件が一致したデータを抽出したいのですが,方法がわかりません。どなたかご存知のかた教えていただけないでしょうか? 列1  列2 aa   vv bb   dd cc   ff dd   aa ee   bb この場合aa,bb が一致する。