Avatar billede j3ppah Novice
29. oktober 2008 - 19:43 Der er 6 kommentarer og
1 løsning

Checksum between sheet's.

Goddag alle eksperter.
Jeg er netop nu løbet ind i et ekstra lille problem på et tidligere stillet spørgsmål.

Jeg har fået lavet en lille regneark makro, som kan checke tal op mod hinanden...
Filen kan hentes her: http://rapidshare.com/files/152369106/Test_til_eksp.xls.html   

Mit problem er nu at jeg ikke kan få den til at checke de tal op som er i sheet 1... Da der godt kan være flere tal i den ene end der er i den anden, skal den checke op på begge ark.

I sheet 1 er I positive tal, og J negative tal.
I sheet 2 er tallene lavet med betegnelser. (collum C)   

Koden ser lige nu sådan ud.
Option Explicit

Public Sub Tjek()
    Dim Data1 As Variant, Data2 As Variant, I As Long, J As Long, RW As Long
    RW = Application.WorksheetFunction.Max(Sheets("Sheet1").[I65536].End(xlUp).Row, Sheets("Sheet1").[J65536].End(xlUp).Row)
    Data1 = Sheets("Sheet1").Range("i1:j" & RW)    ' læser 2 kolonner ind i Data1

    For I = 1 To UBound(Data1)
        If Not IsEmpty(Data1(I, 2)) Then
            Data1(I, 1) = Data1(I, 2) * -1    ' flytter negative værdier over i kolonne I, som  minusværdier
        End If
    Next

    RW = Sheets("Sheet2").[C65536].End(xlUp).Row  ' tjekker antal date i ark2 C kolonnen
    Data2 = Sheets("Sheet2").Range("C1:C" & RW)  'læser det ind i Data2

    For I = 1 To UBound(Data1)
        For J = 1 To RW
            If Data2(J, 1) = Data1(I, 1) Then
                Data2(J, 1) = 0    ' tjekker dem op imod hinanden
                Exit For
            End If
        Next
    Next
    Sheets("Sheet2").Range("D1:D" & RW) = Data2    ' skriver resultatet i d kolonnen ark2
End Sub


Det virker skam ganske fint, men skal bare have den til også at checke op i sheet 1. så den også skriver 0'er hvis de går op der.
Avatar billede kabbak Professor
29. oktober 2008 - 22:09 #1
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("Sheet1").[I65536].End(xlUp).Row, Sheets("Sheet1").[J65536].End(xlUp).Row)
    Data1 = Sheets("Sheet1").Range("i8:j" & RW)    ' læser 2 kolonner ind i Data1
    Data3 = Sheets("Sheet1").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) * -1    ' flytter negative værdier over i kolonne I, som  minusværdier
            Data3(I, 1) = Data1(I, 2) * -1 ' fylder - værdier over i data3
        Else
            Data3(I, 1) = Data1(I, 1) ' fylder + værdier over i data3
        End If
    Next

    RW2 = Sheets("Sheet2").[C65536].End(xlUp).Row  ' tjekker antal date i ark2 C kolonnen
    Data2 = Sheets("Sheet2").Range("C1:C" & 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("Sheet2").Range("D1:D" & RW2) = Data2    ' skriver resultatet i d kolonnen ark2
    Sheets("Sheet1").Range("H8:H" & RW) = Data3  ' skriver resultatet i H kolonnen ark1
End Sub
Avatar billede j3ppah Novice
29. oktober 2008 - 22:22 #2
Altid en fornøjelse at hører fra dig Kabbak :D.. Mange tak.. kan jo ikke sige andet end. DET virker perfekt ;)...
Bare smid svar
Avatar billede kabbak Professor
29. oktober 2008 - 22:29 #3
et svar ;-))

tak for rosen
Avatar billede j3ppah Novice
02. december 2008 - 16:48 #4
Kabbak, nu ved jeg jo du er hardcore ;).. så vil lige hendlede din opmærksomhed på http://www.eksperten.dk/spm/855003

Stortset det samme som sidst.. bare en lille ændring.
Avatar billede j3ppah Novice
04. december 2008 - 17:43 #5
Hey Kabbak, der er lige et lille problem. Den skriver 0 der hvor de tal den har checket op på står... Den skal kun skrive det ude i K.. tallene skal der ud over forblive de samme ;).. Hvis du løser den lille ekstra her, smider jeg lige 100 points til dig!

Altså tallene i I og J skal forblive de sammen, men K skal der så være 0 hvis de går op ;)..
Avatar billede kabbak Professor
04. december 2008 - 20:37 #6
Jeg er forvirret, er det ikke spørgsmål http://www.eksperten.dk/spm/855003, du mener

slet eller ud kommenter denne linje
  Sheets("Bogf.").Range("i8:j" & RW) = Data1
Avatar billede j3ppah Novice
05. december 2008 - 11:33 #7
Doh, var fordi jeg lige fik blandet noget kodt sammen med noget andet jeg sad og legede med :).. må du undskylde, men endnu en gang tak for hjælpen.
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