0

セルの内容:

エプソン/エプソンTMシリーズサプライ/H5000;エプソン/エプソンTMシリーズサプライ/H5200;エプソン/エプソンTMシリーズサプライ/U590;エプソン/エプソンTMシリーズサプライ/930;エプソン/エプソンTMシリーズサプライ/U925;エプソン/エプソンTMシリーズ消耗品/U950

次のルールを使用して、結果のセルをプルする必要があります。最初の単語、セミコロンの前の最後の単語、繰り返し、セミコロンをコンマで下に移動します。4、27、または0のセミコロン(またはその間の任意の数)が存在する可能性があります

上記のフィールドは、Epson H5000、Epson H5200、Epson U590、Epson 930、Epson U925、EpsonU950の出力になります。

結果の値が何らかの形でアルファベット順に並べ替えられた場合のボーナスポイントと小道具の異常な量IE:Epson 930、Epson H5000、Epson H5200、Epson U590、Epson U925、Epson U950

列Aの長さは約28000値です。列Bの結果は問題ありません。

どこからこの問題に取り組み始めるかについて誰かが何か考えを持っているなら、私はそれについての考えを使い果たしました。

4

1 に答える 1

1

別の形式でデータを簡単に取得することはできないと思います。それが最善の解決策です。

また、あなたの「単語」は常にスラッシュで区切られていると思います。Excelでは、このタスク用のVBA関数を記述します。このようなもの:

Option Explicit

Function GetPrinterModels(r As Range) As String
    Dim arr() As String, arr2() As String
    arr = Split(r.Value, ";")

    Dim results() As String
    ReDim results(0 To UBound(arr))

    Dim i As Integer
    For i = 0 To UBound(arr)
        arr2 = Split(arr(i), "/")
        ' If words can also be separated by spaces:
        'arr(i) = Replace(arr(i), "/", " ")
        'arr2 = Split(arr(i), " ")
        results(i) = arr2(0) & " " & arr2(UBound(arr2))
    Next

    GetPrinterModels = Join(results, ", ")
End Function

ソートに関しては、あなたはあなた自身です。関数の最後の行でresults配列を呼び出す前に、配列をソートする必要があります。Join残念ながら、VBAには組み込みの機能はありませんが、Sortオンラインで利用できる既製の並べ替え機能がたくさんあります。

于 2012-05-23T19:10:37.743 に答える