10. november 2005 - 12:12Der 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.
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
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
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?
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.