02. december 2008 - 16:47Der er
8 kommentarer og 1 løsning
Simpel Makro if a = b, then c=
Hej alle eksperter... Er ved at lege lidt med en makro... Det den skal gøre er.
Har kolonne I som er positive tal, og J som er negativetal (men som er skrevet som positive). Den skal egentligt bare checke op på om et tal i I går op med et tal i J... Så derfor behøver jeg ikke rigtigt lave J om til negativer.
så altså hvis fx. I:3 = J:10 så skal K:3 = "0" og K:10 = "0"...
Hvis den derimod ikke finder en match skal K:3 = I:3 og K:10 = J:10... Hmm virker forholdsvist simpel, men er fucket totalt op og er rimeligt ny inden for at lave makroer...
Kunne godt tænke mig en løsning på problmet og håber nogle af jer kan hjælpe mig... for det virker sku ikke rigtigt skide godt :D...
indtilvidere ser det sådan her ud.
Public Sub Tjek() Dim Data1 As Variant, Data2 As Variant, Data3 As Variant, I As Long, J As Long, RW As Long, RW2 As Long RW = Application.WorksheetFunction.Max(Sheets("Bogf.").[I65536].End(xlUp).Row, Sheets("Bogf.").[J65536].End(xlUp).Row) Data1 = Sheets("Bogf.").Range("i8:j" & RW) ' læser 2 kolonner ind i Data1 Data3 = Sheets("Bogf.").Range("H8:H" & RW) ' læser tomme celler i kolonne H til at skrive i
For I = 1 To UBound(Data1) If Not IsEmpty(Data1(I, 2)) Then Data1(I, 1) = Data1(I, 2) Data3(I, 1) = Data1(I, 2) End If Next
RW2 = Sheets("Bogf.").[C65536].End(xlUp).Row ' tjekker antal date i ark2 C kolonnen Data2 = Sheets("Bogf.").Range("I1:I" & RW2) 'læser det ind i Data2
For I = 1 To UBound(Data1) For J = 1 To RW2 If Data2(J, 1) = Data1(I, 1) Then Data2(J, 1) = 0 ' tjekker dem op imod hinanden Data3(I, 1) = 0 Exit For End If Next Next Sheets("Bogf.").Range("H8:H" & RW) = Data3 ' skriver resultatet i H kolonnen ark1 End Sub
Det må kunne laves med en funktion der måler restværdien af en division (Modulus):
=HVIS(REST(A2;B2)=0;"retuernerer noget";"returnerer noget andet")
som i pseudokode betyder, at hvis rest efter divisonen A2 : B2 =0 skal der returneres en tekststreng. Hvis rest er <> 0 skal der returneres noget andet
det skal jo så kunne kører i en form for "lykke" da der kan være over 10000 tal i hver... og at det er 100% vilkårligt hvor de ligger... altså a:1 kan godt være = b:9432
Data1 og Data2 læser begge i kolonne I i Sheets("Bogf."), den ene godt nok fra række 8 og indeholder 2 kolonner, det er vist ikke meningen. Data2 må vel skal læse et andet sted ??
Public Sub Tjek() Dim Data1 As Variant, Data2 As Variant, Data3 As Variant, I As Long, J As Long, RW As Long, RW2 As Long RW = Application.WorksheetFunction.Max(Sheets("Bogf.").[I65536].End(xlUp).Row, Sheets("Bogf.").[J65536].End(xlUp).Row) Data1 = Sheets("Bogf.").Range("i8:j" & RW) ' læser 2 kolonner ind i Data1 Data3 = Sheets("Bogf.").Range("H8:H" & RW) ' læser tomme celler i kolonne H til at skrive i
For I = 1 To UBound(Data1) If IsEmpty(Data1(I, 2)) Then Data3(I, 1) = Data1(I, 1) Else Data3(I, 1) = Data1(I, 2) * -1 End If Next
For I = 1 To UBound(Data1) For J = 1 To UBound(Data1)
If Data1(J, 1) = Abs(Data1(I, 2)) Then If Not IsEmpty(Data1(J, 1)) And Not IsEmpty(Data1(I, 2)) Then Data1(I, 2) = 0 ' tjekker dem op imod hinanden Data1(J, 1) = 0 Data3(I, 1) = 0 Data3(J, 1) = 0 Exit For End If End If Next Next Sheets("Bogf.").Range("K8:K" & RW) = Data3 ' skriver resultatet i H kolonnen ark1 Sheets("Bogf.").Range("i8:j" & RW) = Data1 End Sub
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.