Avatar billede Morten Nybegynder
08. oktober 2003 - 10:41 Der er 12 kommentarer og
1 løsning

Finde værdi i array

Hej

I forlænglese af mine spørgsmål om at hente tabeller fra access til en variabel er der nu dukket et nyt spørgsmål op:

Er det muligt at forspørge enkelt i et array istedet for at gennemløbe alle posterne...?

Altså ligesom man med en SQL kan skrive Where.... og så puff har den fundet værdien...???
Avatar billede stefanfuglsang Juniormester
08. oktober 2003 - 10:49 #1
Prøv at kigge på databasefunktioner (skriv dette i søgefeltet) i hjælpen
f.eks. DHENT
Avatar billede Morten Nybegynder
08. oktober 2003 - 10:52 #2
Øhhhhhh DHENT i VBA kode????? I Excel ??????
Den skal vist forklares nærmere
Avatar billede stefanfuglsang Juniormester
08. oktober 2003 - 10:56 #3
Som Excel-formel - simplere ting kan i stedet laves med LOPSLAG

DHENT:
Uddrager en enkeltværdi fra en kolonne på en liste eller i en database, som opfylder de angivne kriterier.


Syntaks

DHENT(database;felt;kriterier)

Database  er det celleområde, der udgør listen eller databasen. En database er en liste med relaterede data, hvor rækkerne med relaterede oplysninger er poster, og kolonnerne med data er felter. Den første række på listen indeholder etiketter til hver kolonne.

Felt  angiver, hvilken kolonne der benyttes i funktionen. Argumentet felt kan bestå af tekst med kolonneetiketten omsluttet af dobbelte anførselstegn, f.eks. "Alder" eller "Høst", eller af tal, der repræsenterer kolonnens placering på listen: 1 til den første kolonne, 2 til den anden kolonne osv.

Kriterier  er det celleområde, der indeholder de angivne betingelser. Du kan bruge et hvilket som helst område til kriterieargumentet, forudsat at det indeholder mindst én kolonneetiket og mindst én celle under kolonneetiketten til angivelse af en betingelse til kolonnen.
Avatar billede Morten Nybegynder
08. oktober 2003 - 11:15 #4
Okay - så må jeg lige forklare mig lidt bedre...

Dataerne ligger ikke i et Excel ark - men findes kun i et Array så længe min (VBA)-userform lever og det er ikke direkte i Excel jeg skal bruge værdierne men i min VBA kode....

Så det jeg ville høre var om jeg istedet for:

  For i = 0 to Ubound(MitArray)
      if MitArray(i,0) = ID then
        Min kode her
      end if
  next i

kunne hente den med et eller andet som en SQL f.eks. Select... from.... Where...

Sorry Stefan - jeg kan godt se jeg ikke havde forklaret mig ordentlig første gang....
Avatar billede stefanfuglsang Juniormester
08. oktober 2003 - 11:40 #5
Ok - jeg har totalt misforstået. Jeg ved ikke meget om SQL. Prøv at lukke spørgsmål (m. point til dig selv) og opret et nyt, hvis der ikke kommer flere svar her.
Avatar billede bak Forsker
08. oktober 2003 - 11:59 #6
Lige et hastigt skud...
tag lige et kig på vba-funktionen Filter (ikke worksheetfunktionen).
Jeg er ikke sikker på at den dur til 2 dimensionelle arrays
Avatar billede Morten Nybegynder
08. oktober 2003 - 12:29 #7
>>Bak

Jooo det kunne vist godt bruges - men når man læser lidt foreslår de faktisk at man istedet åbner et recordset med Select...Where...

men hvordan tester jeg hvileken der bedst - har man nogen mulighed for at test tid...?
Avatar billede bak Forsker
08. oktober 2003 - 13:26 #8
Jeg tror mest på at gennemløbe dit array.
Det er utrolig hurtigt at løbe et array igennem når der ikke er ret mange IF'er
Avatar billede Morten Nybegynder
08. oktober 2003 - 13:35 #9
Kan du hjælpe med et eksempel (Det er et 2 dim. array jeg har)
Avatar billede sjap Praktikant
08. oktober 2003 - 17:38 #10
Det kan måske gøres med

For i = LBound(Array, 1) To UBound(Array, 1)
    For j = LBound(Array, 2) To UBound(Array, 2)
        If Array(i, j) = DenVærdiJegLederEfter Then

            Her skriver du så hvad der skal ske, når du har fundet værdien

        End If
    Next j
Next i
Avatar billede bak Forsker
08. oktober 2003 - 18:10 #11
Hvis du tager superjabs model, vil du helt sikkert finde hvad du leder efter.
Jeg tror nu bare at du er klar over hvilken "kolonne" i dit array du ønsker at søge i, så hvis det er tilfældet er din egen version hurtigst.

For i = 0 to Ubound(MitArray,1)
      if MitArray(i,2) = ID then
        Min kode her
      end if
next i
Avatar billede Morten Nybegynder
23. oktober 2003 - 10:03 #12
>BAK: Svar venligst... så jeg kan lukke
Avatar billede bak Forsker
24. oktober 2003 - 08:09 #13
ok :-)
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