单元格内容:
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
如果结果值按字母顺序排序,则奖励点数和道具数量惊人IE: Epson 930,Epson H5000,Epson H5200,Epson U590,Epson U925,Epson U950
A列大约有28000个值的长度。B列中的结果是正常的。
如果有人有任何关于从哪里开始解决这个问题的想法,我已经没有想法了。
发布于 2012-05-24 03:10:38
我假设您不能轻松地以另一种格式获取数据。这将是最好的解决方案。
我还假设你的“单词”总是用斜杠隔开。在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函数,但网上有大量现成的排序函数可用。
https://stackoverflow.com/questions/10726247
复制相似问题