advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 19646 for 20�����������������������... (0.004 sec.)
[[20210920210052]]
#score: 2682
@digest: a6d052887f7898874f20dd489881db7d
@id: 89057
@mdate: 2021-09-22T07:49:08Z
@size: 6482
@type: text/plain
#keywords: 1535270 (46493), 4870184 (46493), 5785869 (46493), 5156009 (46493), 2851329 (23246), 4870182 (23246), 3237580 (23246), 番20 (12059), 注日 (11936), 番) (11161), customorder (10023), 品番 (7609), 受注 (6689), 日品 (6358), 2021 (5741), sortfields (4730), xlascending (2974), ソー (2807), mydic (2333), 昇順 (1814), ト用 (1694), ラ) (1496), ー' (1431), 番が (1426), 優先 (1306), サポ (1290), ドラ (1146), 09 (1054), メソ (987), 重複 (950), ブジ (915), オブ (912)
『並べ替え』(ドラ)
同品番が複数あれば受注日より品番をまとめたいです。 下記の様に並べ替えを行うにはどのような方法がありますでしょうか? 宜しくお願いします。 並べ替え前 A列 B列 受注日 品番 2021/09/17 1535270 2021/09/17 4870182 2021/09/17 4870184 2021/09/17 5156009 2021/09/17 5785869 2021/09/18 1535270 2021/09/20 2851329 2021/09/20 3237580 2021/09/20 4870184 2021/09/20 5156009 2021/09/20 5785869 並べ替え後 ↓ A列 B列 受注日 品番 2021/09/17 1535270 2021/09/18 1535270 2021/09/17 4870182 2021/09/17 4870184 2021/09/20 4870184 2021/09/17 5156009 2021/09/20 5156009 2021/09/17 5785869 2021/09/20 5785869 2021/09/20 2851329 2021/09/20 3237580 < 使用 Excel:Excel2013、使用 OS:Windows10 > ---- 現在、A列の昇順になっているのであれば、 B列を昇順に並び替えれば、 同一品番で、受注日が逆転することはありません。 こういうソートを「安定ソート」と呼びますが、 Excelのソートは「安定ソート」であり、上記のことが保証されています。 # 心配なら、第一優先キーを品番、第二優先キーを受注日にしても # もちろん問題ありません。 (γ) 2021/09/20(月) 21:09 ---- γさん 早速のご返答ありがとうございます。 説明不足で申し訳ございません。下記の様になるのは確認出来るのですが 同品番が複数あればまとめて次は受注日の古い物を優先したいです。 受注日 品番 2021/09/17 1535270 2021/09/18 1535270 2021/09/20 2851329 2021/09/20 3237580 2021/09/17 4870182 2021/09/17 4870184 2021/09/20 4870184 2021/09/17 5156009 2021/09/20 5156009 2021/09/17 5785869 2021/09/20 5785869 (ドラ) 2021/09/20(月) 21:48 ---- どうなればいいのか示してください。 (γ) 2021/09/20(月) 21:56 ---- >どうなればいいのか示してください。 最初に示しているのだが? (横入り失礼) 2021/09/20(月) 22:03 ---- ちょっと分からない。他の方の回答を待って下さい。 (γ) 2021/09/20(月) 22:19 ---- 基本 受注日順で、品番が複数あるものは最初の位置にまとめる ということですか? (namn) 2021/09/21(火) 08:38 ---- # 昨日は藤井・木村戦が気になってしまって失礼しました。 改めて考えてみました。 マクロを使っていますが、こんなことではどうですか? コピーを別シートのA1から書き込んで、以下のtestを実行してみて下さい。 Sub test() Dim dic As Object Dim k&, p& Dim 品番$ '元データは受注日の昇順でソートされているものとする。一行目は見出しあり。 'ソート用のキーである、 '「品番毎の連番 * 10 + 重複データ加算(品番が重複していたら1から順次加算)」を 'C列にセット Set dic = CreateObject("Scripting.Dictionary") For k = 2 To Cells(Rows.Count, "A").End(xlUp).Row 品番 = CStr(Cells(k, "B")) If Not dic.Exists(品番) Then p = p + 1 dic(品番) = p * 10 '品番が重複するデータは最大でも10個とした Else dic(品番) = dic(品番) + 1 End If Cells(k, "C") = dic(品番) Next 'C列で昇順ソート [A1].CurrentRegion.Sort key1:=Range("C1"), _ Order1:=xlAscending, _ Header:=True End Sub (γ) 2021/09/21(火) 09:07 ---- もちろんマクロが必須というわけでもありません。 (私は式が苦手なので、コードを書くほうが負荷が少なかったというだけです) 重複を排除した一意の品番セットを作成したうえで、 MATCH関数とCOUNTIF関数を組みあわせれば、 上記のソート用のキーは簡単に作成できます。 実際のソートすら関数で書けるでしょうけど、 ソートというツールを使ったほうがよいと思います。 (γ) 2021/09/21(火) 10:16 ---- C2 =IF(COUNTIF($B$2:B2,B2)=1,MAX($C$1:C1)+1,VLOOKUP(B2,$B$1:C1,2,FALSE)) 下コピー データ〜並べ替え 「先頭行をデータの見出しとして使用する」にチェック C列をキーに昇順並べ替え 少なくとも例示通りにはなります。 以上 (笑) 2021/09/21(火) 13:10 ---- 横からですがnamnさんが読み解いた通りであって、VBAでもOKということであれば (1)受注日順に並んだ状態で、品番が出てくる順に【連想配列】で重複しないリストを得る (2)(1)のリスト順に【Sortオブジェクト】で並び替える というアプローチでもよいかもしれません。 Sub 別案() Dim MyDIC As Object Dim i As Long Set MyDIC = CreateObject("Scripting.Dictionary") On Error Resume Next For i = 2 To Cells(Rows.Count, "B").End(xlUp).Row MyDIC.Add Cells(i, "B").Value, "" Next i On Error GoTo 0 With ActiveSheet.Sort .SortFields.Clear .SortFields.Add2 Key:=Range("B1"), Order:=xlAscending, CustomOrder:=Join(MyDIC.keys, ",") .SetRange Range("A1").CurrentRegion .Header = xlYes .Apply End With End Sub Sortメソッドだと、γさんが示されたように作業列をつかうとか、「ユーザー設定リスト」に追加してから何番目か指定するなどの対策を行う必要がありますが、Sortオブジェクトであればコード中にそのまま書けるのが強みですね。 (その分コードはややこしくなっちゃいますが) (もこな2) 2021/09/21(火) 13:44 ---- namnさん 分りにくい説明で申し訳ございません。そうです。 γさん、笑さん やりたかった事が出来ました。ありがとうございました。 もこな2さん 「実行時エラー'438′:オブジェクトは、このプロパティまたはメソッドをサポートしていません。」と表示されるのですが? (ドラ) 2021/09/21(火) 23:54 ---- >「実行時エラー'438′:オブジェクトは、このプロパティまたはメソッドをサポートしていません。」と表示されるのですが? そうですか。私の環境(office365/Windows10)だと動作しますが、Excel2013だと何か対応してないのかもしれませんね。 今後の参考にしたいので、差し支えなければ、どこでエラーが発生していたか(エラー発生時にどこがハイライトされていたか)教えていただけないですか? (もこな2 ) 2021/09/22(水) 02:50 ---- もこな2さん おはようございます。 .SortFields.Add2 Key:=Range("B1"), Order:=xlAscending, CustomOrder:=Join(MyDIC.keys, ",") ここでエラーが発生します。宜しくお願いします。 (ドラ) 2021/09/22(水) 07:23 ---- 情報提供ありがとうございます。 もしかしたらですが .SortFields.Add2 Key:=Range("B1"), Order:=xlAscending, CustomOrder:=Join(MyDIC.keys, ",") ↓ .SortFields.Add Key:=Range("B1"), Order:=xlAscending, CustomOrder:=Join(MyDIC.keys, ",") とすればよいかもしれません。(あんまり自信ないですが) (もこな2 ) 2021/09/22(水) 07:53 ---- ちょっと調べてみました。やはり、「.Add2」が原因のようですね。 失礼しました。 http://officetanaka.net/excel/vba/tips/tips148.htm (もこな2 ) 2021/09/22(水) 08:23 ---- もこな2さん 出来ました。ありがとうございました😊 (ドラ) 2021/09/22(水) 16:49 ...
http://www.excel.studio-kazu.jp/wiki/kazuwiki/202109/20210920210052.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97018 documents and 608145 words.

訪問者:カウンタValid HTML 4.01 Transitional