• Status: Solved
  • Priority: High
  • Security: Public
  • Views: 74
  • Last Modified:

Show digits as needed 4N DD D TRI

need select the digits are show here

eeee1111111.PNG
file is here
29013873b--1-_4N_select_DD_and_TRI_.xlsm
0
ADRIANA P
Asked:
ADRIANA P
  • 2
1 Solution
 
Ryan ChongCommented:
you may try this macro codes:

Const Limit As Integer = 4

Public Function GetDouble(v As String) As String
    Dim tmpArr(Limit - 1) As String
    
    If Len(v) = Limit Then
        tmpArr(0) = Mid(v, 1, 1)
        tmpArr(1) = Mid(v, 2, 1)
        tmpArr(2) = Mid(v, 3, 1)
        tmpArr(3) = Mid(v, 4, 1)
        
        For i = 0 To Limit - 1 - 1
            For j = i + 1 To Limit - 1
                If tmpArr(i) = tmpArr(j) Then
                    GetDouble = tmpArr(i) & tmpArr(j)
                    Exit Function
                End If
            Next j
        Next i
    End If
    GetDouble = ""
End Function

Public Function GetNotDouble(v As String) As String
    Dim tmp As String
    Dim tmpArr(Limit - 1) As String
    
    If Len(v) = Limit Then
        tmpArr(0) = Mid(v, 1, 1)
        tmpArr(1) = Mid(v, 2, 1)
        tmpArr(2) = Mid(v, 3, 1)
        tmpArr(3) = Mid(v, 4, 1)
        
        For i = 0 To Limit - 1 - 1
            For j = i + 1 To Limit - 1
                If tmpArr(i) = tmpArr(j) Then
                    For k = 0 To Limit - 1
                        If k <> i And k <> j Then
                            tmp = tmp & tmpArr(k)
                        End If
                    Next k
                    GetNotDouble = tmp
                    Exit Function
                End If
            Next j
        Next i
    End If
    GetNotDouble = ""
End Function

Public Function GetDoubleAndNode(v As String, index As Integer) As String
    Dim tmp As String, GetNotDouble As String
    Dim tmpArr(Limit - 1) As String
    
    If Len(v) = Limit Then
        tmpArr(0) = Mid(v, 1, 1)
        tmpArr(1) = Mid(v, 2, 1)
        tmpArr(2) = Mid(v, 3, 1)
        tmpArr(3) = Mid(v, 4, 1)
        
        For i = 0 To Limit - 1 - 1
            For j = i + 1 To Limit - 1
                If tmpArr(i) = tmpArr(j) Then
                    tmp = tmpArr(i) & tmpArr(j)
                    
                    For k = 0 To Limit - 1
                        If k <> i And k <> j Then
                            GetNotDouble = GetNotDouble & tmpArr(k)
                        End If
                    Next k
                    GetDoubleAndNode = tmp & IIf(index = 1, Mid(GetNotDouble, 1, 1), Mid(GetNotDouble, 2, 1))
                    Exit Function
                End If
            Next j
        Next i
    End If
    GetDoubleAndNode = ""
End Function

Open in new window


apply formula such as:

=GetDouble(BF45)

Open in new window


=GetNotDouble(BF45)

Open in new window


=GetDoubleAndNode(BF45,1)

Open in new window


=GetDoubleAndNode(BF45,2)

Open in new window

29013873b--1-_4N_select_DD_and_TRI_.xlsm
1
 
ADRIANA PACCOUNTING ASSISTANTAuthor Commented:
Ryan Chon

Thanks ! ! ;)
0
 
ADRIANA PACCOUNTING ASSISTANTAuthor Commented:
Great JOB Best Expert !
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Ultimate Tool Kit for Technology Solution Provider

Broken down into practical pointers and step-by-step instructions, the IT Service Excellence Tool Kit delivers expert advice for technology solution providers. Get your free copy now.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now