Avatar billede helene_foght Nybegynder
17. juni 2009 - 09:57 Der er 5 kommentarer og
1 løsning

Problem med formatering ved lopslag - F2 tast

Hej

Ved lopslag returnerer Excel #I/T fordi der er et mis-match imellem formateringen. Vi har forsøgt alle gængse løsninger på det problem:
- formatere som tekst
- gange med 1
- kopiere og indsætte værdier

Det eneste, der hjælper, er at stille markøren på cellen, trykke på F2 tasten, så sætter Excel et grønt mærke i hjørnet af cellen, og har så "Tal gemt som Tekst". Efter at have trykket på F2 på den enkelte celle virker lopslaget, men det er jo en langsommelig løsning, når regnearket er på 20.000+ linier...

Har nogen en bedre løsning?

På forhånd tak,
Helene
Avatar billede supertekst Ekspert
17. juni 2009 - 12:46 #1
Du er velkommen til at sende den pågældende fil /uddrag.
Mail under profil.

En løsning kunne måske også være via VBA - afh. af konteksten.
Avatar billede Snune Nybegynder
17. juni 2009 - 16:20 #2
Hvis det er din opslagsværdi der er tekst og din tabelmatrix der er tal kan du lave lopslaget til tal ved at sige =lopslag(opslagscelle+0;kilde;kolonnenummer;falsk)

Hvis det er din tabelmatrix der er tekst og din opslagsværdi der er tal er du nødt til at lave en ny kolonne ved siden af din nøglekolonne som hedder opslagscelle+0, kopiere den nye over i den oprindelige og sige indsæt som værdi.
Avatar billede supertekst Ekspert
17. juni 2009 - 17:19 #3
Har udarbejdet en makro:
Oprindelige/p.t. antal LOPSLAG-fejl: 5430

13346 rækker er behandlet
12052 rækkers productId kan findes

Process-tid 35 sek.

Filen returneres & koden vises
Avatar billede supertekst Ekspert
17. juni 2009 - 17:32 #4
Koden:

Dim ark2 As Worksheet, productID As String
Dim pRække As Integer, antalFundne As Integer, res1 As Variant
Public Sub autoLopslag()
Rem definer kildeArk
    Set ark2 = ActiveWorkbook.Sheets("LIIIM2")
    antalFundne = 0
    antalmedfejl = 0
   
    Application.ScreenUpdating = False
   
Rem Traverser ark1
    For ræk = 2 To 65000
Rem hent produktNr fra Kolonne E
        productID = Cells(ræk, 5)
       
        res1 = Cells(ræk, 6)
        If IsError(res1) = True Then
            antalmedfejl = antalmedfejl + 1
        End If
       
        If productID = "" Then
            Exit For
        Else
            pRække = søgProductID(productID)
            If pRække > 0 Then
                antalFundne = antalFundne + 1
               
Rem vises til højre for oprindelige resultat-celler
                ActiveSheet.Range("O" & CStr(ræk)) = hentProductData(pRække, 25)
                ActiveSheet.Range("P" & CStr(ræk)) = hentProductData(pRække, 26)
                ActiveSheet.Range("Q" & CStr(ræk)) = hentProductData(pRække, 27)
                ActiveSheet.Range("R" & CStr(ræk)) = hentProductData(pRække, 2)
            End If
        End If
    Next ræk
   
    Application.ScreenUpdating = True
   
    MsgBox ("Antal beh. række: " & CStr(ræk - 1) & vbCr & _
        "Antal fundne: " & CStr(antalFundne & vbCr & _
            "Antal opr. fejl: " & CStr(antalmedfejl)))
End Sub
Private Function søgProductID(id)
    With ark2.Range("A2:A65000")
        Set c = .Find(id, LookIn:=xlValues, LookAt:=xlWhole)
        If Not c Is Nothing Then
            søgProductID = c.Row
        Else
            søgProductID = 0
        End If
    End With
    Exit Function
End Function
Private Function hentProductData(række, kolonneNr)
    hentProductData = ark2.Cells(række, kolonneNr)
End Function
Avatar billede helene_foght Nybegynder
18. juni 2009 - 12:49 #5
Hej

Smider du et svar, så du kan få dine point?

Tak,
Helene
Avatar billede supertekst Ekspert
18. juni 2009 - 12:56 #6
Det får du her & selv tak
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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