Avatar billede Peter Praktikant
12. november 2003 - 15:05 Der er 28 kommentarer og
1 løsning

Søge i en kolonne og tage date fra de næste 6 kolonner.

Hej alle,
Jeg har en tabel med ca. 2000 rækker og 9 kolonner.
Første kolonne er en forkortelse på 3 bogstaver. For hver forkortelse er der et antal indgange i de resterende kolonner.
Jeg vil gerne have trukket alt data ud for hver enkelt forkortelse via en søgning.
Jeg vil have et forsideark med et inputfelt og en knap til at søge, hvis der skrives AAA skal søgningen finde alle de linjer i tabellen (ark2) hvor indgang 1 matcher AAA og smide dem i en tabel på forsiden.

Hvordan kan det laves?

Kan man ligeledes tilføje et 3. ark der indeholder alle de forskellige forkortelser ud hvor man så i det ark kan tilføje navn til forkortelse. For så ville jeg gerne have trukket dette navn over på forsiden ved en søgning. Altså så der kommer 2 resultater: en tabel med data fra ark 2 og et felt med navn hentet via ark 3.
Avatar billede stewen Praktikant
12. november 2003 - 15:11 #1
Lyder som en opgave for pivottabelen......
Avatar billede Peter Praktikant
12. november 2003 - 15:13 #2
kan du være lidt mere specifik?
Avatar billede Peter Praktikant
12. november 2003 - 15:20 #3
bortset fra det, er det smarte så ikke ved pivottabelen at den ligger alle data for hver unik indgang i tabellen sammen til en.

indgang 1 er et produkt.
indgang 2 er en udbyder.
resten af indgangene er priser ved forskellige kvantitiver.

Det jeg vil have er, at jeg for hvert enkelt produkt kan hive udbyder ud med priser og derved sammenligne de forskellige udbydere af dette produkt.
Avatar billede stewen Praktikant
12. november 2003 - 15:21 #4
Ok - praler lige (læs: tænker!)
Avatar billede Peter Praktikant
12. november 2003 - 15:25 #5
ok
Avatar billede aheiss Praktikant
12. november 2003 - 17:14 #6
Hvor tæt kommer nedenstående kode på dit første ønske :

Sub hent()
c = InputBox("Hent data for produkt          eks:  AAA", "hentdata")
Dim a As Range
Dim b As Range
Set a = Worksheets("ark2").UsedRange
Set b = Worksheets("ark1").Cells
b.Delete
Dim i As Long
For i = 1 To a.Rows.Count
If a(i, 1) = c Then
    a.Rows(i).Copy
    Worksheets("ark1").Range("A65536").End(xlUp)(2, 1).Insert
End If
Next i
End Sub
Avatar billede Peter Praktikant
12. november 2003 - 17:38 #7
aheiss >> Det ser rimeligt ud, men jeg tror ikke det skal være en dialogbox men bare en celle.

Din kode søger igennem kolonne A i ark2 og indsætter for hver funden "AAA" de næste celler i ark1 på først kommende tom linje. Har jeg forstået rigtigt?

Jeg tænker noget i retning af et komplet layout på forsiden med en tom tabel. I A1 skriver man så forkortelsen og visual går i gang med at søge og genererer tabellen fra celle A7 og ned så langt som nødvendigt.
Jeg kender ikke så meget til vb, men jeg vil gerne vide lidt mere om syntaks. Kan du linke til en god side hvor jeg kan læse om de forskellige kommandoer til brug med Excel.
Avatar billede bak Forsker
12. november 2003 - 19:49 #8
Du kunne bruge avanceret filter
Navngiv dit dataområde,  "database" . På det andet ark skriver du en overskrift i A1 og søgekriterie i A2. Navngiv disse 2 celler "Kriterie"

Bestem hvor du ønsker outputtet og navngiv de celler der skal indeholde overskrifterne "Output".

Nu kan du så køre en makro som nedenstående hver gang du har ændret i søgekriterierne. (lav en knap der kører den)

Range("database").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
        "Kriterie"), CopyToRange:=Range("Output"), Unique:=False


Fordi du bruger navngivne områder kan avanceret filter bruges mellem to ark.
Avatar billede bak Forsker
12. november 2003 - 20:02 #9
Avatar billede Peter Praktikant
12. november 2003 - 23:30 #10
bak >> Det ser rigtigt godt ud, det er helt klart noget i den retning jeg skal bruge. Jeg kigger lige lidt nærmere på det og ser hvordan det vil virke i mit tilfælde.
Men kan jeg blive fri for at have søgekriteriet i tabellen, altså f.eks aab?
Avatar billede Peter Praktikant
13. november 2003 - 00:12 #11
har fundet ud af at blive fri for søgekriteriet i tabellen.
Vil du ligge et svar bak.
Avatar billede Peter Praktikant
13. november 2003 - 00:38 #12
Lige en ting mere jeg håber at kunne få hjælp med.
Da det ikke kun er mig der skal bruge databasen er jeg ikke så vild med makroer da de jo skal godkendes hvis de bruges på en anden computer. Så jeg vil høre om man kan køre makroen via vba i stedet for så regnearket kan åbnes på en vilkårlig maskine og køre uden at godkende noget?
Avatar billede Peter Praktikant
13. november 2003 - 00:43 #13
For lige at præcisere yderligere.
Jeg kunne godt tænke mig det sådan, at når man taster en forkortelse og trykker enter, så kommer tabellen frem så man ikke behøver trykke på nogle knapper eller noget.
Avatar billede bak Forsker
13. november 2003 - 08:28 #14
Det er ikke muligt at køre det uden makroer, hvis det skal være nemt.

dit andet spørmål kan nemt klares.
Højreklik på arkfanen, vælg "Vis Programkode" og indsæt dette:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A2")) Is Nothing Then
    Call hentdata
End If
End Sub

Nu kan du fjerne søge-knappen.
Hver gang A2 ændres vil et nyt datasæt blive hentet.
Avatar billede Peter Praktikant
13. november 2003 - 09:35 #15
ok, det virker meget fint uden knappen. Men det er altså ikke rigtigt muligt at køre en advanced filter via visual basic script? Altså at sætte filteret i stedet for at kalde makroen.
Alternativet var jo at kode søgningen i visual, men det er en rimeligt skidt løsning når det nu er indbygget i Excel synes jeg.
Avatar billede Peter Praktikant
13. november 2003 - 09:45 #16
Når jeg sender regnearket til andre, så kan de jo som standard ikke køre makroen uden at sætte deres securitylevet til low. Hvordan kan dette gøres lettest sådan at de kan køre makroen ved bare at autorisere lige præcis den makro uden at ændre sikkerhedsniveau.
Avatar billede bak Forsker
13. november 2003 - 10:16 #17
makro og visual basic for applications er det samme, så uanset hvad du vælger har du samme problem.
Standard står security til medium, hvilket betyder at brugeren bliver spurgt.
Du kan måske vælge at signerere din makro/kode, men det ved jeg ikke nok om hvordan man gør.
Avatar billede Peter Praktikant
13. november 2003 - 10:19 #18
ok, så ser jeg ingen fordel ved ikke at beholde makroen.
Jeg har læst lidt om at signere, men jeg kan ikke finde nogle steder hvor man kan få et digitalt id gratis.

Men vil brugeren blive spurgt hver gang?
Avatar billede Peter Praktikant
13. november 2003 - 10:56 #19
brugeren vil selvfølgelig blive spurgt hver gang.
Jeg har bestilt et certifikat hos TDC, det er gratis. Så må vi se om jeg kan få det til at virke.
Jeg vil gerne protecte hele arket pånær A2, det kan jeg godt. Men makroen vil ikke køre efter dette, skal jeg også unprotecte de felter data bliver kopieret over i?
Avatar billede Peter Praktikant
13. november 2003 - 12:55 #20
Jeg har løst problemet, jeg har sat makroen til at ubeskytte arket og så køre filteret og slutte af med at beskytte arket igen. Simpelt og lige til og forhåbentligt en ok løsning.

Bak vil du ligge et svar så du kan få nogle point, de er fuldt ud fortjente.
Avatar billede bak Forsker
13. november 2003 - 13:18 #21
ok. Jeg kan godt li' simpelt og ligetil :-)
Avatar billede bak Forsker
13. november 2003 - 13:18 #22
og her er så svaret
Avatar billede Peter Praktikant
13. november 2003 - 13:26 #23
tak for hjælpen, du har virkeligt reddet mig.
Lige en sidste ting, kan du give mig et visual script der kører en makro ved tryk på en celle bare, så hvis man vælger cellen køres makroen?
Avatar billede Peter Praktikant
13. november 2003 - 13:28 #24
Jeg har jo tabellen og så vil jeg gerne sortere efter de forskellige overskrifter, så jeg har lavet en makro der sorterer tabellen efter en af søjlerne. Jeg ville så lave tilsvarende makroer for de andre søjler og så sætte visual til at køre en makro for celle A7, en anden for celle A8.
Det kan vel sagtens lade sig gøre, men kan man slippe for at have 8 makroer eller er det det letteste?
Avatar billede Peter Praktikant
13. november 2003 - 13:32 #25
kan man evt. få visual til at køre en makro ved dobbeltklik på en celle?
Avatar billede bak Forsker
13. november 2003 - 14:57 #26
Du kan køre en makro ved dobbelklik på en celle ved at lægge denne ind i arkets eget kodemodul.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
If Not Intersect(Target, Range("F11")) Is Nothing Then
    Call DinEgenMakro
End If
End Sub
Avatar billede Peter Praktikant
13. november 2003 - 15:08 #27
Virker helt perfekt, men kan man undgå at skulle lave koden for hver enkelt makro og også at undgå at skulle lave 8 makroer. Altså en makro der tager en værdi og sorterer derefter?
Eller vil det letteste være at lave 8 makroer og så indsætte koden for hvert enkelt felt, altså 8 gange kode også?
Avatar billede bak Forsker
13. november 2003 - 15:14 #28
Det første lyder smartest, men vis lige din makro
Avatar billede Peter Praktikant
13. november 2003 - 15:22 #29
Sub sort()
    ActiveSheet.Unprotect
    Range("A5:I20").sort Key1:=Range("E6"), Order1:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
  ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

Sådan ser makroen ud, denne kalder jeg så via din visual kode.
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