Avatar billede hubertus Seniormester
25. februar 2018 - 18:19 Der er 12 kommentarer

Excel 2013 - hjælp med isNumeric i kode

Hvad overser jeg i nedenstående kode? anvendes samme kode i Excel 2010 så fungerer den fint.
Jeg har en kolonne E bestående af  tekst og tal. rækker med tekst skal flyttes til et andet ark.  Det går galt i linjen, hvor jeg skal afgøre om det er en tekst eller et tal. Gode råde efterlyses - også gerne en optimering, da det tager ret lang tid at gennemløbe de mange linjer.

Sub test()
Call FlytTilFejllliste("Data", 3196)
End Sub

Sub FlytTilFejllliste(ark, Num_of_Rows)
' Dim num_of_rows As Integer
Dim i As Integer
Dim text As integer

Sheets(ark).Activate

    For i = Num_of_Rows To 2 Step -1
         
        text = Range(col & i)
            If Not IsNumeric(text) Then
                Sheets(ark).Range("A" & i & " : H" & i).Copy
                Worksheets("Fejlliste").Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial
                Sheets(ark).Range("A" & i & " : H" & i).Delete
            End If
    Next

End Sub
Avatar billede kabbak Professor
25. februar 2018 - 18:56 #1
Text = range ("A" &I)
Avatar billede hubertus Seniormester
25. februar 2018 - 19:12 #2
Hej Kabbak - jeg kan se, at jeg mangler en linje i min kode i forhold til min oprindelige kode: col = "E": Det er ikke her, at problemet ligger.

Sub FlytTilFejllliste(ark, Num_of_Rows)

Dim i As Integer
Dim col As String
Dim text As integer

Sheets(ark).Activate
col = "E"
    For i = Num_of_Rows To 2 Step -1
         
        text = Range(col & i)
            If Not IsNumeric(text) Then
                Sheets(ark).Range("A" & i & " : H" & i).Copy
                Worksheets("Fejlliste").Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial
                Sheets(ark).Range("A" & i & " : H" & i).Delete
            End If
    Next

End Sub
Avatar billede kabbak Professor
25. februar 2018 - 20:40 #3
Hvad går galt, bliver linien i koden hul, eller hvad sker der.
Avatar billede kabbak Professor
25. februar 2018 - 20:47 #4
hul = gul
Avatar billede hubertus Seniormester
25. februar 2018 - 21:07 #5
I Excel 2010 afvikles koden uden problemer, kun linjer med tekst flyttes til arket fejllisten. I Excel 2013, så kan jeg godt afvikle koden. Resultatet er bare, at der også flyttes nogle af de linjer, der indeholder tal i col E.
Avatar billede kabbak Professor
25. februar 2018 - 21:23 #6
Sub FlytTilFejllliste(ark, Num_of_Rows)

Dim i As Integer
Dim col As String

Sheets(ark).Activate
col = "E"
    For i = Num_of_Rows To 2 Step -1
         
            If Not IsNumeric(Range(col & i)) And Range(col & i) <> "" Then
                Sheets(ark).Range("A" & i & " : H" & i).Copy
                Worksheets("Fejlliste").Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial
                Sheets(ark).Range("A" & i & " : H" & i).Delete
            End If
    Next

End Sub
Avatar billede store-morten Ekspert
25. februar 2018 - 21:36 #7
Sub FlytTilFejllliste(ark, Num_of_Rows)

Dim i As Integer
Dim col As String

Sheets("ark").Activate
col = "E"
Application.ScreenUpdating = False
    For i = Num_of_Rows To 2 Step -1
         
        text = Range(col & i)
            If Not IsNumeric(text) Then
                Sheets("ark").Range("A" & i & " : H" & i).Copy
                Worksheets("Fejlliste").Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial
                Sheets("ark").Range("A" & i & " : H" & i).Delete
            End If
    Next
Application.ScreenUpdating = True
End Sub
Avatar billede hubertus Seniormester
25. februar 2018 - 22:10 #8
Kabbak: resultatet er nu, at der er en del linjer, hvor der er tekst i Col E, som ikke bliver flyttet.

Store-Morten:  samme resultat som i Kabbaks kode.
Avatar billede hubertus Seniormester
25. februar 2018 - 22:11 #9
har det nogen betydning at indholdet i Col E er resultatet af en Vlookup?
Avatar billede Mads32 Ekspert
25. februar 2018 - 23:37 #10
Hej hubertus.

Hvis "har det nogen betydning at indholdet i Col E er resultatet af en Vlookup?" er problemet, så prøv at tjekke dette, ved at kopiere cellerne til sig selv, som værdier.
Avatar billede hubertus Seniormester
25. februar 2018 - 23:53 #11
selvfølgelig - og ja, jeg har tjekket det, med samme resultat, så det har ingen betydning.
Avatar billede hubertus Seniormester
28. februar 2018 - 22:57 #12
Det først problem blev løst med følgende kode:

Public Sub Flyt_linjer(ark)
    Dim RåData As Variant, UdData2 As Variant, UdData3 As Variant, UdData4 As Variant
    Dim UD2 As Long, UD3 As Long, UD4 As Long
    Dim I As Integer, J As Long, X As Integer, Col As Integer, Rk As Long, Y As Integer
   
    UD2 = 2
    UD3 = 2
     
  Application.Sheets(ark).Activate
   
    RåData = Sheets(ark).Range("A1").CurrentRegion
    Rk = UBound(RåData, 1)
    Col = UBound(RåData, 2)

    ReDim UdData2(Rk, Col)
    ReDim UdData3(Rk, Col)
    ReDim UdData4(Rk, Col)

    For I = 1 To UBound(RåData, 2)
        UdData2(1, I) = RåData(1, I)
        UdData3(1, I) = RåData(1, I)
    Next 
     
    For J = 2 To Rk
   
        If IsNumeric(RåData(J, 5)) = True Then
                    For X = 1 To Col
                UdData2(UD2, X) = RåData(J, X)
            Next
            UD2 = UD2 + 1
       
        Else
            For X = 1 To Col
                UdData3(UD3, X) = RåData(J, X)
            Next
            UD3 = UD3 + 1     
     
        End If
      Next   
 
  Sheets("TestData").Range("A1").Resize(Rk, Col) = UdData2
  Sheets("fejl").Range("A1").Resize(Rk, Col) = UdData3

End Sub

Det er en tilrettet kode fra Kabbak, som jeg har fundet på nettet.

jeg har et lille problem tilbage.  De data som koden skal bruges på er en udlæsning fra en database. I en af kolonnerne er indeholdet et 16 cifret tal - men formatet tekst. Når jeg kører koden, så konverteres celleindholdet til tal
Hvordan får jeg bibeholdt tallet så det ikke ændres fra 9208606203199067
til 9.20861E+15
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

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