17. juni 2009 - 09:57Der 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...
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.
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
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.