2017-11-09 8 views
-2

次の条件に基づいてマクロを使用してexcelでシートをソートするのを探しています。私は下のサンプルを与えています。それに応じてソートするアルゴリズムを教えてください。数値とドット(。)の組み合わせに基づいてExcel VBAマクロを並べ替える

並べ替えは、数字の順序と1つまたは複数の '。'に基づいて行う必要があります。例えば

Iがソートされていないために、値のセットを以下た:
Unsorted

Iは、次に1又は複数と共に数を考慮してソートされるべきであるIDに基づいて用紙をソートする必要があり、マクロを必要「」 。したがって、1、1.1.1、1.1、1.2がある場合、ソート順は1,1,1,1,1,1,2でなければなりません。

したがって、上記のソートされていないシートは、ソートされたマクロは、この私のためのトリックん

Sorted

+0

がなぜないだけで、あなたのVBAコードは、Excelが昇順でそれをソートするために取得するには、Getを伴って含むIDをランク付けに基づいて用紙をソートするためにマクロを作成した区切り文字? – YowE3K

+0

昇順にしか動作しません。それは、 "。"だけでなく、数字シーケンスに基づいてソートする必要があるためです。 –

+0

異なるデータを使用するように要件が更新されています。その場合、いくつかのVBAを書く必要があります。あなたがこれまでに持っていたものを投稿すれば、それを完了させる手助けができるかもしれません。 – YowE3K

答えて

0

私はこの問題の解決策を見つけました。私はID列を分割し、それに基づいています。次の式を使用して、ランキングに上がってきたが

Excel Sheet Sample

Public Sub SortWorksheet() 
    ThisWorkbook.Worksheets(WS_SiteRawData).Activate 
    Range("A3:IR1000").Select 
    Selection.sort Key1:=Range("N3"), Order1:=xlAscending, Key2:=Range("E3") _ 
     , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _ 
     False, Orientation:=xlTopToBottom 
End Sub 
0

を実行した後、次のようになります。

Option Explicit 

Sub SortThis() 

Dim lonLastRow As Long 
Dim rng As Range 

With ActiveSheet 
    lonLastRow = .Cells(Rows.Count, 1).End(xlUp).Row 
    Set rng = .Range(.Cells(2, 2), .Cells(lonLastRow, 2)) 
    rng.Sort Key1:=.Cells(2, 2) 
End With 

End Sub 

が持つ「Activesheet」を置換することを確認しますあなたが必要とするシートへの直接的な参照(番号またはbij名による)。

+0

これは動作しません。更新された要件 –

+0

を見てください。それは動作します..あなたの更新要件のために、あなたはあなたの必要に応じて 'rng'とKey1の範囲を調整する必要があります... – Wimpel

関連する問題