0

单元格内容:

Epson/Epson TM 系列耗材/H5000;Epson/Epson TM 系列耗材/H5200;Epson/Epson TM 系列耗材/U590;Epson/Epson TM 系列耗材/930;Epson/Epson TM 系列耗材/U925;Epson/Epson TM 系列耗材/U950

我需要使用以下规则提取结果单元格:第一个单词,任何分号之前的最后一个单词,重复,用分号替换逗号。可能有 4、27 或 0 个分号(或介于两者之间的任何数字)

上述字段将导致输出 Epson H5000、Epson H5200、Epson U590、Epson 930、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 回答