Avatar billede janvogt Praktikant
10. november 2005 - 12:12 Der er 7 kommentarer og
1 løsning

VBA Finde gengangere i tal-streng

Jeg har 3 variable - f.eks. X, Y og Z.
Hver variabel er tildelt en værdi.
Eks.:
X = 12456
Y = 123489
Z = 2468

Opgaven går nu på at undersøge de 3 tal-strenge for at finde cifre, som går igen i alle 3 tal-strenge.
I ovenstånde eks. skulle der returnes: 24, da tallene 2 og 4 er de eneste, som går igen.
Hvis det kan hjælpe kan jeg oplyse, at X,Y og Z altid er sorteret med det mindste ciffer først, og at der aldrig er gengangere i den enkelte tal-streng.
Den størst tænkelige streng er derfor: 123456789.

Er der nogen, som kan hjælpe med koden?
Avatar billede kabbak Professor
10. november 2005 - 13:05 #1
Dim Gentaget As String
X = 12456
Y = 123489
Z = 2468
For I = 1 To 9
If InStr(X, I) > 0 And InStr(Y, I) > 0 And InStr(Z, I) > 0 Then
Gentaget = Gentaget & I
End If
Next
Avatar billede kabbak Professor
10. november 2005 - 13:12 #2
som funktion

Public Function Gentaget(X, Y, Z) As String
For I = 1 To 9
If InStr(X, I) > 0 And InStr(y, I) > 0 And InStr(Z, I) > 0 Then
Gentaget = Gentaget & I
End If
Next
End Function
Avatar billede janvogt Praktikant
10. november 2005 - 15:52 #3
Takker. Tænkte nok det kunne gøres kort for en VBA-ekspert :-)

Jeg har lige et tillægsspørgsmål (værdi +60 point):
Jeg har udvidet koden lidt, fordi XYZ-værdierne hentes fra forskellige adresser.
Koden ser nu sådan ud:

Sub CheckCelle()
    Dim Gentaget As String
    X = 0
    Y = 0
    Z = 0
       
    Xcol = ActiveCell.Column
    Xrow = 12
   
    Ycol = 12
    Yrow = ActiveCell.Row
   
    'Zcol:
        Zcol = 15
        If ActiveCell.Column > 4 Then Zcol = 16
        If ActiveCell.Column > 7 Then Zcol = 17
               
    'Zrow:
        Zrow = 2
        If ActiveCell.Row > 4 Then Zrow = 3
        If ActiveCell.Row > 7 Then Zrow = 4
   
    X = Cells(Xrow, Xcol).Value
    Y = Cells(Yrow, Ycol).Value
    Z = Cells(Zrow, Zcol).Value
   
    For I = 1 To 9
    If InStr(X, I) > 0 And InStr(Y, I) > 0 And InStr(Z, I) > 0 Then
    Gentaget = Gentaget & I
    End If
    Next
       
End Sub

Jeg ønsker nu at gennemløbe hele området B2:J10 med ovenstående kode og placere resultatet(Gentaget) i en tilsvarende matrix U2:AC10.
Hvordan vil koden nu se ud?
Det må jo være noget med: For Each cell in .... Next. Men hvordan?
Avatar billede janvogt Praktikant
10. november 2005 - 17:10 #4
2. del er flyttet til http://www.eksperten.dk/spm/663458.

Kabbak, smid et svar ....
Avatar billede kabbak Professor
10. november 2005 - 18:55 #5
et svar ;-))
Avatar billede janvogt Praktikant
10. november 2005 - 19:04 #6
Kunne du hjælpe med den 2. del?
Avatar billede kabbak Professor
10. november 2005 - 19:07 #7
Jeg kikker på den, jeg skal lige lure hvordan den finder værdierne.
Avatar billede kabbak Professor
10. november 2005 - 19:16 #8
tak for point ;-))
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester