首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Excel Vba -字符串中的组号序列

Excel Vba -字符串中的组号序列
EN

Stack Overflow用户
提问于 2014-12-08 04:18:53
回答 1查看 323关注 0票数 0

我有一个代码,它从定义的单元格返回所有匹配值的数字序列字符串。图示如下:

代码语言:javascript
复制
COL A    COL B  COL C
Item No  Data   Unique Data
1        A      A
2        A      B
3        A
4        B
5        B
6        A
7        A
8        B
9        B
10       B

单元格D2 =查找序列(C2,B2:B11,A2:A11)将返回1, 2, 3, 6, 7

单元格D3 =查找序列(C3,B2:B11,A2:A11)将返回4, 5, 8, 9, 10

然而,我想要的结果是;

细胞生长因子( D2 -> 1-3, 6-7 )

细胞生长因子( D3 -> 4-5, 8-10 )

下面是我使用的函数的代码:

代码语言:javascript
复制
Function Lookupsequence(Search_string As String, _
Search_in_col As Range, Return_val_col As Range)
Dim i As Long
Dim result As String

For i = 1 To Search_in_col.Count
If Search_in_col.Cells(i, 1) = Search_string Then
result = result & ", " & Return_val_col.Cells(i, 1).Value

End If
Next
Lookupsequence = Trim(result)
End Function
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-08 06:39:10

试试这个:

代码语言:javascript
复制
Function Lookupsequence(Search_string As String, _
Search_in_col As Range, Return_val_col As Range)
Dim i As Long
Dim result As String
Dim initial As String
Dim separator As String
Dim preValue As Integer
Dim value As Integer

preValue = -1
separator = ""
For i = 1 To Search_in_col.Count
    value = CInt(Return_val_col.Cells(i, 1).value)
    If Search_in_col.Cells(i, 1) = Search_string Then
        If value - 1 = preValue Then
            result = initial & "-" & value
        Else
            result = result & separator & value
            initial = result
            separator = ","
        End If
        preValue = value
    End If
Next
Lookupsequence = Trim(result)
End Function
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27351363

复制
相关文章

相似问题

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