Avatar billede sleeper Nybegynder
27. november 2008 - 21:50 Der er 7 kommentarer og
1 løsning

Søg nummer i ekstern .txt fil

Hej

Kan man lave noget smart, således at excel laver et tjek om et ordrenummer findes i en .txt fil i en mappe på computeren?

Jeg har et excelark, hvor der i kollone E står et ordrenummer, og i kollone J vil jeg så gerne have et "JA / NEJ" alt efter om dette ordrenummer findes i en tekstfil som er placeret i en anden mappe
Avatar billede komputerdk Mester
29. november 2008 - 15:34 #1
den nemmeste måde vil jeg mene at importere tekstfilen i et dataark (bare en fane, jeg har kaldt dataark, du kan evt. vælge formater>ark>skjul ark, så brugeren ikke kan se det...

import af tekstfil, laves således : data> import af eksterne data > importer data, der kan man vælge tekstfil i typen... så får man en guide op hvordan det importeres..

importen kan så gøres sådan at du enten højreklikker på området hvor den sætter data ind og vælger opdater, du kan også vælge egenskaber for dataområde , og vælge at den skal opdatere ved åbning af fil.. (så er den opdateret hver gang, og du skal ikke kode dig ud af problemet)..

så kan du lave en formel for at tjekke om det findes..

=LOPSLAG(E1;dataark!$A:$A;1;FALSK)
-(syntax for lopslag er (celle der skal slås op, område (husk $ , da den ellers flytter området man slår op i, OBS opslagsværdien SKAL stå i første kolonne)),kolonnenr man får værdien fra, falsk (falsk er at værdien skal være magen til, sand, så kan ordrenr 100 0g 101 godt give samme resultat))

den giver en I/T fejl, hvis data ikke er der, og ordrenr hvis den findes. Derfor kan man gøre følgende:

=hvis(er.fejl(LOPSLAG(E1;dataark!$A:$A;1;FALSK))=sand;"NEJ";"JA")

ergo, I/T er en fejl, så hvis den findes, skal der stå NEJ (da den ikke kan slå værdien op), eller JA (ergo den findes)...
Avatar billede komputerdk Mester
29. november 2008 - 15:35 #2
alternativt, skal du lave en vba kode der åbner filen og deler den... og sætter ind i excel..
Avatar billede sleeper Nybegynder
02. december 2008 - 08:35 #3
Importen kan jeg godt lave, men det er for stort et arbejde at importere.

Der skal blot søges efter en værdi.
Lige pt bruger jeg vindows til at søge i mappen med filer, dette er hurtigere end at importere, dog ville det jo være endnu hurtigere hvis jeg kunne søge direkte fra excel
Avatar billede komputerdk Mester
02. december 2008 - 09:47 #4
du skal jo kun lave importen en gang - så opdaterer du bare importen (som beskrevet)

alternativt, kan du lave en funktion i excel (VBA) - men den  er langt mere bøvlet end at importere. Nedenstående , vil kigge i teksten efter teksten i funktionen =findtxt(celle, eller "tekst") og returnere ja eller nej.

MEN den er pt. følsom for store og små bogstaver (fjern ' foran find_txt = lcase... så er den ikke , desuden vil den returnerer ja, hvis du søger efter 1001 og der i teksten står 8881001888888888 - ellers skal den koden til også at finde mellemrum)..

jeg bruger selv den funktion (dog med html data), men importen er langt det nemmeste - synes jeg..


Public Function findtxt(ByVal find_txt As String) As String
  Dim L As Long
  Dim S As String
  Dim FileNum As Integer
  Dim txtfilnavn As String
  txtfilnavn = "c:\test.txt" 'det er her filstien skal stå
  FileNum = FreeFile
    Open txtfilnavn For Binary Access Read Shared As #FileNum
  L = LOF(FileNum)
  S = Space$(L)
  Get #1, , S
  Close #FileNum
'find_txt = lcase(find_txt) 'fjern anførelsestegnet for at tilføje at store og små bogstaver er forskellige
  If InStr(1, S, find_txt) Then
  findtxt = "Ja"
  Else
  findtxt = "Nej"
  End If
 
 
End Function
Avatar billede sleeper Nybegynder
02. december 2008 - 10:06 #5
Som jeg skrev, har jeg styr på importen

Vil du have at jeg skal importere +10.000 filer??? for at søge et nummer??
Det kan jeg afvise på forhånd.

Jeg skal en sjællend gang imellem, søge efter en stak ordrenumre i en EDIFACT Arkiv mappe, hvor alle DESADV jeg udlæser placeres.

Denne mappe vokser med 30-50 nye filer om dagen, så jeg er ikke interesseret i at importere dem i et ark.
Avatar billede komputerdk Mester
02. december 2008 - 12:44 #6
i starten stod der en txt fil...
man kan alternativt flette filerne sammen og søge i den..

men ordrenummeret er der kun en gang ???  (er der andre info fra den fil du skal have ??? )


du kan ikke få data ud på en anden måde ???



alternativt så kan man også bruge Windows Live Search og indexering af .txt filer..
Avatar billede sleeper Nybegynder
02. december 2008 - 13:14 #7
mine EDIFACT dokumenter ligger også som .txt filer

Ja windows live search kan også bruges, men det kræver stadigvæk at jeg søger efter 1 fil af gangen, grunden til dette spørgsmål, vara at jeg havde en excelliste, som jeg gerne ville kunne afsøge en hel række ordrenumre på en gang.

Ordrenumre kan godt være der flere gange, og der kan være flere forskellige ordrenumre pr fil.

Jeg skal blot bruge et tjek, findes ordrenr = JA / NEJ
Avatar billede sleeper Nybegynder
10. november 2009 - 21:16 #8
lukker uden en løsning
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