[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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
文脈から、なぜ【つまり】なのか、よくわかりませんが、要は、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
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.