2017-11-30 5 views
0

ドメイン別の電子メールリストのソート方法については、多くの回答があります。 私が必要とするものは違っています。 私が持っているのは、正しくソートする必要のあるドメインとサブドメインのリストです。 ご存知のとおり、ドメイン階層は最後に始まります。つまり、最初に.com、次にドメイン、その後に接尾辞が付けられます。 "www" したがって、関連性によってそれらをグループ化する必要があります。左から右に開始しますAからZまでのExcelのドメイン名別の列の並べ替え

www.somedomain.com 
www.someotherdomain.co.uk 
www.yetonemoredomain.org 
sub.somedomain.com 
1.somedomain.com 
2.yetonemoredomain.org 
3.someotherdomain.co.uk. 
www2.yetonemoredomain.org 
mail.someotherdomain.co.uk 

平野ソート、私はそれがフィールドセパレータとしてドットで、左から右にソートする必要があります は例えば、私は、以下のドメインを持っています。 私は単純なbashコマンドがそれを行うことができることを知っていますが、私はそれをExcelで必要とします。 "Text to columns"を使い、ドットで区切って必要に応じて列を並べ替えることを考えていましたが、これはx.y.x.somedomain.comなどの第4レベルのドメイン以上の列を作成する際に問題を引き起こす可能性があります。 列は左から右に作成されます。つまり、.comが一番右の列ではなく異なる列に入る可能性があります。 これを行うには、より良い方法が必要であると確信しています。 ご協力いただきありがとうございます。 Ziv

+1

あなたは標準のExcel列のソリューションが必要です、または(マクロ有効ブックで定義されている)VBA関数は、実行可能なソリューションですか? – Prebsus

+0

私はテンプレートを作成しようとしているので、VBAとマクロを扱わない方が好きです。 私はストレートフォワードの標準よりも優れていますが、その方が掘り下げていくほど強いのです。 最初に区切り文字で列を分割し、すべての列を指定された順序で並べ替えることで何かをすることができました。列4、列3のようになります。 並べ替えが終わると、その間にドットを1つ追加して列を連結し、必要に応じて「完全」なドメインリストをソートしました。 – TuxSax

答えて

2

これはおそらく、Reverse the ordering of words in a stringとして知られる最も古いアルゴリズム上の問題のバリエーションです。期待される答えは、次のとおりです。 - それぞれの単語とその後の全文。

あなたの場合、これを正確に実行してから並べ替える必要があります。

Public Function ReverseMe(textToReverse As String, _ 
     Optional delim As String = " ") As String 

    Dim test As String 
    Dim arr  As Variant 
    Dim arr2 As Variant 
    Dim arrPart As Variant 
    Dim cnt  As Long 

    arr = Split(textToReverse, delim) 
    ReDim arr2(UBound(arr)) 

    For Each arrPart In arr 
     arr2(cnt) = StrReverse(arrPart) 
     cnt = cnt + 1 
    Next arrPart 

    ReverseMe = StrReverse(Join(arr2, delim)) 

End Function 

Public Sub TestMe() 

    Debug.Print ReverseMe("veso.dosev.diri.rid", ".") 
    Debug.Print ReverseMe("VBA is the best language") 

End Sub 

あなたはなるだろう:

rid.diri.dosev.veso 
language best the is VBA 
関連する問題