[[20170108163237]] 『Excelの並べ換え(ソート)の複数の条件がある場香x(ウルトラ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『Excelの並べ換え(ソート)の複数の条件がある場合の方法』(ウルトラ)

Excelのデーターを3行が一区切りごとのランダムにデーターが入っている時に、3行一区切りごとの並べ変えをしたい。加えて、摘要の列の文言(20文字程度)もそろえて同時に並べ換えをする時によい方法がないものか、教えてもらえませんか。

< 使用 Excel:Excel2013、使用 OS:Windows10 >


 こんばんわ。

 作業列を使って3行毎に同じ番号を振れば3行単位の並べ替えが出来ますが、
 番号を振る為の基準となる要素が提示されていないので、回答側も数式を提示できません。

 3行毎に並べ替える為のキーとなる実際のデータを提示して下さい。

(sy) 2017/01/08(日) 16:48


番号 摘要 特別番号 氏名 所属  備考      出欠   年   回数 個数 数量
                                                     1   1     2    5
1    XXX A1254 NMNKKK  POU         欠     2  2  6  9
                                                    3  5  8 12
                                                     1   1     2    5
2   HJY A3587  HJLUUU POI              出     2  2  6  9
                                                    3  5  8 12
                                                     1   1     2    5
3   LKU A2875   GTR KKK GFD             欠    2  2  6  9
                                                    3  5  8 12

上記のような状態のデーターです。ExcelのセルはA列からQ列のデーターになります。年 回数 個数 数量のところがH・I・J・K列になります。L列以後もQ列までありますが、形式としては、番号〜出欠のところと同じように真ん中の行に文言数字等が入ります。但し、備考のとこは、3行の文言がはいることがあります。人数としては、20名から40名といった範囲になります。(年のところの1・2・3は変わりません)

つまり、特別番号の順番で、且つ摘要が同じものでソートをしたいということです。そして、番号のところも、自動的に1〜順番に番号が付けは尚更よいのですが、どうでしようか。
(ウルトラ) 2017/01/08(日) 18:03


 横から失礼。

 >>つまり

 文脈から、なぜ【つまり】なのか、よくわかりませんが、要は、3行1固まりのデータの最初の行にしか記入されていない
 特別番号-->適用 の昇順並び替えを行いたいということですか?

(β) 2017/01/08(日) 18:50


 あっ!
 これってもしかして番号から出欠までは3行毎にセルを結合してるんですか?

 結合セルと未結合セルが混在してたら一括ではソート出来ないと思います。

 手動だとちょっと手間になると思いますが、この動作をマクロ化しても良いと思います。
 1、作業列2列(多分R列とS列)に以下の式を入力します。
    R2 =INDEX(C:C,INT((ROW(A1)-1)/3)*3+2) (C列に特別番号があると仮定しています)
    S2 =INDEX(B:B,INT((ROW(A1)-1)/3)*3+2) (B列に摘要があると仮定しています)
 2、RとS列をコピペ値貼付けで値に変更します。
 3、番号から出欠までの範囲でソート(キーは特別番号、摘要の順にします)
 4、残りの範囲をソート(キーはR列、S列の順にします)

 他の人がもっと良い案出してくれるかもですが、今パッと思いつく限りではこんな感じでしょうか。

(sy) 2017/01/08(日) 18:53


 番号の自動採番は以下の式で出来ます。

 =(ROW()+1)/3

 念の為、私の回答は全て番号から出欠までが3行毎の結合セルと言う前提で回答しています。

 結合セルじゃ無かったら方法が変わるので言って下さい。

(sy) 2017/01/08(日) 19:01


A    B     C     D     E        F        G    H      I    J    K
番号 摘要 特別番号 氏名 所属  備考      出欠   年   回数 個数 数量
 上記のセルのA〜K列になっています。結合セルの意味がよくわかりませんが、上記のようになったデーターです。

文脈から、なぜ【つまり】なのか、よくわかりませんが、要は、3行1固まりのデータの最初の行にしか記入されていない

 特別番号-->適用 の昇順並び替えを行いたいということですか?

 特別番号-->適用 の昇順並び替えを行いたいということですか?の質問の通りです。また、且つ摘要が同じものでソートをしたいのです。 
(ウルトラ) 2017/01/08(日) 19:29

 >結合セルの意味がよくわかりませんが、上記のようになったデーターです。 
 >番号〜出欠のところと同じように真ん中の行に文言数字等が入ります。

 すいません。
 初めの文面を読み飛ばしてました。

 結合セルで無いなら簡単ですね。
 R2 =INDEX(C:C,INT((ROW(A1)-1)/3)*3+3)
 S2 =INDEX(B:B,INT((ROW(A1)-1)/3)*3+3)
 下にオートフィル

 として、優先順位をR、S列の順にしてソートすれば良いです。
 無いと思いますが、2行目にあるデータが1行目や3行目にずれる事があれば、
 T2 =MOD((ROW(A1)-1),3)
 を追加して3番目のキーとしてソートすれば位置ずれも絶対起きません。

 番号の自動採番は、
 A2 =IF(MOD(ROW(),3),"",ROW()/3)
 下にオートフィルで出来ると思います。

(sy) 2017/01/08(日) 20:13


 syさん 2017/01/08(日) 20:13
返事が遅くなり大変申し訳ありません。お示し頂いた関数で一応できましたが、私の紹介ミスでデーターが3行目から入っていて、エラーになってしまい正確なデーターがはいりません。関数のどこを変えたらよいでしょうか。教え頂けませんか。

また、別件で下記のように、コピペのマクロを作りました。、
Sub test1()

    Sheets(6).Select

    Range("A1:F100").Select
    Selection.Copy

    Sheets(6).Select
    Range("G1:L100").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False

End Sub

上記のようなマクロでコピー側(A1:F100)に関数が入っていた場合に、値のみを(G1:L100)貼り付けたい時に、何を追加したらよいのか、教えて頂けませんか。

(ウルトラ) 2017/01/13(金) 16:21


これは、元質問と全く関係ないので、別途質問した方が良かったですね。
とりあえず、今回はこのまま継続するとして、同じシート内のコピペという事ですね?

 Sub test()
    With Sheets(6)
        .Range("A1:F100").Copy
        .Range("G1").PasteSpecial xlPasteValues
    End With
    Application.CutCopyMode = False
 End Sub
(???) 2017/01/13(金) 16:32

syさん 2017/01/08(日) 20:13
この質問は自分でクリアーできました。
また、下記のことについては、これも教えて頂いたことで、完成しました。ありがとうございました。これから、別に質問します。すいませんでした。
(???) 2017/01/13(金) 16:32
>これは、元質問と全く関係ないので、別途質問した方が良かったですね。
(ウルトラ) 2017/01/14(土) 11:02

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.