[[20220921190632]] 『SORT関数が使えないので代用関数で並び替えをした』(藤岡) ページの最後に飛ぶ

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

 

『SORT関数が使えないので代用関数で並び替えをしたい』(藤岡)

質問させて頂きます

表がありまして、納期のA列で昇降順に並び替えをしたいです
手動でフィルターや並び替えで出来るのですが、表のデータをコピーしてくるので毎回の手作業を省きたく関数で出来ないかと調べました。2016のエクセルではSORT関数が使えないことが分かり、他の関数で出来ないかと質問させて頂きます
A列のA2より下は日付が入っているのですが、納期を過ぎると0を入力しますので
数字の0か日付が入っていることになります。A列の書式がユーザー書式でm/d;;"超過"と設定してますので、値は0で表示は超過となっております
その為昇降順で並び替えると超過の表示が一番上に来ます。
0(超過)の行がいくつかありますが、0(超過)の行の中での順番の規制はありません。どれが上でどれが下でも構いません

上の表が元で、並び替えたのが下の表になります
宜しくお願い致します

	A	B	C	D	E
1	納期	号数	数	担当	品名
2	6/6	3号	6	山田	E
3	超過	4号	4	鈴木	A
4	3/4	1号	1	和田	H
5	5/20	2号	4	和田	R
6	7/10	8号	1	鈴木	D
7	2/20	5号	5	安倍	S
8	8/12	9号	3	鈴木	W
9	超過	1号	2	山田	P
10	2/5	6号	2	大木	F
11	8/19	3号	1	和田	K
12	7/18	4号	7	山田	T
13	5/5	7号	1	安倍	G

A列で並び替え後

	A	B	C	D	E
1	納期	号数	数	担当	品名
2	超過	4号	4	鈴木	A
3	超過	1号	2	山田	P
4	2/5	6号	2	大木	F
5	2/20	5号	5	安倍	S
6	3/4	1号	1	和田	H
7	5/5	7号	1	安倍	G
8	5/20	2号	4	和田	R
9	6/6	3号	6	山田	E
10	7/10	8号	1	鈴木	D
11	7/18	4号	7	山田	T
12	8/12	9号	3	鈴木	W
13	8/19	3号	1	和田	K

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


 回答ではありません。

 例だけみると、単純にA列を昇順ソートするだけなので、
 個人的には、さほど面倒では無いと思うのですが、
 >表のデータをコピーしてくるので毎回の手作業を省きたく
 上記一連の作業(データコピー&昇順ソート)を
 マクロで行われてはいかがでしょうか?

 昇順ソート部だけなら、
 以下でも動作すると思います。

    Sub 昇順ソート()
        With ActiveSheet.Sort
            .SortFields.Clear
            .SortFields.Add Range("A1")
            .SetRange Range("A1").CurrentRegion
            .Header = xlYes
            .Apply
        End With
    End Sub
(無関数) 2022/09/21(水) 21:59

 元データがSheet1で最大100行目までだとして。
 別シートのA2セルに
 =IFERROR(INDEX(Sheet1!A:A,MOD(AGGREGATE(15,6,(Sheet1!$A$2:$A$100+ROW($2:$100)/1000)/(Sheet1!$A$2:$A$100<>""),ROW(A1)),1)*1000),"")
 と入力して右及び下へフィルコピーではどうだろうか?
 なお納期が同じものは元データで行が上のものを上にする。
(ねむねむ) 2022/09/21(水) 22:00

これと同じだよね
手動だと面倒くさいから、名前変えて質問も少し変えて数式にしたのかな。

[[20220917170947]] 『並び替えで質問です』(まさ)
(vvb) 2022/09/22(木) 02:19


ねむねむさん 有難う御座います
100行までは問題なく動作しました 感謝です
大変申し訳ないのですが、最大で2500行くらいのものがありまして
3000行まで対応する式に変更したいのですが教えて頂けないでしょうか
何度もすみません

無関数さん 有難う御座います
マクロの式はとても良いのですが、誰でも使えるとなると敷居が高くなってしまいまして、元データをコピーして貼り付けるだけで計算してくれる関数を希望いたしました

vvb 有難う御座います
再質問になります。エクセル、パソコンに詳しくない者3人で作業してまして、私の環境ではXLOOKUPを使えるけど会社の2016エクセルでは使えないとか、不具合もありまして試行錯誤しながらやっております
どうせなら全部関数でやればヒューマンエラーは無くなるとか、方針の転換もありまして、最初から設計もきちんとやるべきでした。
(藤岡) 2022/09/22(木) 04:21


 ちょっと、理解できません。
 メニューから数回クリックで出来る事を何故、複雑にするのでしょう?
 まして、EXCELが複数バージョンであったり、パソコンに詳しくない人が作業するなら、
 EXCELの標準メニューから実行するのが最良と思いますが...

 前回のスレッドで「0」を表示形式で「超過」と表示する方法を教えてもらったんですよね。
 この方法なら、自分の2021ではリボンのメニューから2クリック、作業時間約1秒で終わりましたよ。
 並び替えメニューはどのバージョンのEXCELでもあります。
(まる) 2022/09/22(木) 07:47

コピーして貼り付けたら計算してくれるからって理由で 計算範囲の行数すら増やせない人が
パソコンに詳しくない人が使う表に数式を作業列もテーブル書式も設定せずに入れて ヒュー
マンエラーが減るってどういう理屈なんでしょうか。
(d-q-t-p) 2022/09/22(木) 09:03

 最大3000行であれば
 =IFERROR(INDEX(Sheet1!A:A,MOD(AGGREGATE(15,6,(Sheet1!$A$2:$A$3000+ROW($2:$3000)/10000)/(Sheet1!$A$2:$A$3000<>""),ROW(A1)),1)*10000),"")
 で。
(ねむねむ) 2022/09/22(木) 09:11

掲示板に質問しないと式が作れない時点で、その方針は完全なヒューマンエラーになっていませんか?

(kansou) 2022/09/22(木) 20:30


コメント返信:

[ 一覧(最新更新順) ]


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