2014-12-08 3 views
0

정의 된 셀에서 일치하는 모든 값의 숫자 시퀀스 문자열을 반환하는 코드가 있습니다. 아래 당 그림 :Excel Vba - 문자열 내부의 그룹 번호 시퀀스

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 = Lookupsequence (C2, B2 : B11, A2 : A11) 1, 2, 3, 6, 7

셀 D3 = Lookupsequence 반환 (C3를, B2 : B11, A2 : A11) 반환 할 것이다 4, 5, 8, 9, 10

그러나, 내가 원하는 결과는;

셀 D2 ->1-3, 6-7

셀 D3 -> 아래

4-5, 8-10 내가 함수의 코드 사용하고 있습니다 :

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 

답변

0

이 시도 :

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

스카이 마스터에게 감사드립니다. 내가 원하는 방식 일뿐입니다. 또한 코드가 이전 코드보다 훨씬 빠르게 작동하는 것 같습니다. 고맙습니다. .. –