首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从excel/openoffice单元格中动态拉取第一个、最后一个单词(甚至更多!)

从excel/openoffice单元格中动态拉取第一个、最后一个单词(甚至更多!)
EN

Stack Overflow用户
提问于 2012-05-24 03:03:29
回答 1查看 440关注 0票数 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

如果结果值按字母顺序排序,则奖励点数和道具数量惊人IE: Epson 930,Epson H5000,Epson H5200,Epson U590,Epson U925,Epson U950

A列大约有28000个值的长度。B列中的结果是正常的。

如果有人有任何关于从哪里开始解决这个问题的想法,我已经没有想法了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-24 03:10:38

我假设您不能轻松地以另一种格式获取数据。这将是最好的解决方案。

我还假设你的“单词”总是用斜杠隔开。在Excel中,我会为此任务编写一个VBA函数。如下所示:

代码语言:javascript
复制
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函数,但网上有大量现成的排序函数可用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10726247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档