Oprettet tor. d. 04. marts 2010 kl. 13:19:36

zjat
zjat (6.826 point. Point ude: 30)

Find ved at kigge på række og kolonne

Hej Alle sammen

Jeg har et lille excel problem.

Jeg har en bestemt celle jeg gerne vil finde. Jeg ved hvilken række (5), hvor cellen befinder sig - nu vil jeg gerne vide hvilken kolonne.

=MATCH("*001";Boeger!$A$38:$IL$38;0)

Problemet er bare at der findes flere kolonner med *001 til sidst. Med den funktion finder den bare først kommende kolonne. Jeg vil gerne finde først kommende kolonne med en værdi i række 5. (gerne uden vba).

Er der nogen der kan hjælpe med dette?

Skrevet tor. d. 04. marts 2010 kl. 15:28:07| #1

excelent
excelent (88.505 point)
=MATCH("*";5:5;0)

Skrevet tor. d. 04. marts 2010 kl. 15:41:41| #2

zjat
zjat (6.826 point)
? *001 skal også være opfyldt. På den måde finde man bare først kommende celle med en værdi, uden at tage højde for at der i række 38 skal stå *001.

bøger 134  333  001  001
hej    5    7    0    1

Et forsimplet eksempel, vil gerne have excel til at finde "1"

Skrevet tor. d. 04. marts 2010 kl. 15:42:30| #3

zjat
zjat (6.826 point)
bøger 134  333  001  001
hej      5    7    0    1

prøver lige igen - så tallene står under hinanden :)

Skrevet tor. d. 04. marts 2010 kl. 15:54:28| #4

excelent
excelent (88.505 point)
lav et eks i excel og send det på mail

Skrevet tor. d. 04. marts 2010 kl. 21:10:32| #5

zjat
zjat (6.826 point)
Et eksempel på filen kan hentes her:

http://peecee.dk/upload/view/229912

tallet markeret med gult vil jeg godt finde.

tallet markeret med grøn kender jeg inden søgning. På den måde ved jeg hvilken række jeg skal søge i. Jeg ved også at kolonnen hvor det gule tal findes i slutter på 001. Desværre er der flere tal der slutter på 001 - men der er kun en kolonne der slutter med tallet 001, hvor der er et tal i den "grønne" række.

Skrevet fre. d. 05. marts 2010 kl. 17:54:58| #6

excelent
excelent (88.505 point)
Prøv denne brugerdefineret Funktion:
Indsæt den i et almindeligt modul
I arket taster du: =xfind(A1:K1;2;"001")
A1:K1 er det område hvor du har nogle tal som ender på 001
2 er den række du vil hente værdi fra og "001" din betingelse
Er det række 5 du vil hente værdi fra, udskifter du blot 2 med 5

Function xfind(rng As Range, rk, tal)
Application.Volatile
For Each c In rng
If Right(c, 3) = tal And c.Offset(rk, 0) <> "" Then xfind = c.Offset(rk, 0): Exit Function
Next
End Function

Skrevet man. d. 08. marts 2010 kl. 09:20:59| #7

zjat
zjat (6.826 point)
Den siger at der er:

Compile error:
Variable not defined

og markerer "c" i "For each c ln rng

Og kan jeg godt sætte rækken til at være lig en celle i stedet for en bestemt række?

Skrevet man. d. 08. marts 2010 kl. 09:46:42| #8

zjat
zjat (6.826 point)
Har fundet problemet. Koden skulle være:

Function xfind(rng As Range, rk, tal)
Dim c As Variant
Application.Volatile
For Each c In rng
If Right(c, 3) = tal And c.Offset(rk, 0) <> "" Then xfind = c.Offset(rk, 0): Exit Function
Next
End Function

Nu får jeg så tallet - men ville egentlig også gerne vide hvilket *001 tal den nåede frem til. Om det var 953001 eller 338001 :)

Skrevet man. d. 08. marts 2010 kl. 09:55:21| #9

zjat
zjat (6.826 point)
Derudover tror jeg funktionen stadig ikke virker :( Den skriver i hvert fald 0 hvor den burde have undersøgt videre.

Skrevet tir. d. 09. marts 2010 kl. 18:17:35| #10

excelent
excelent (88.505 point)
Hvis du skal have begge værdier, kan du ikke umiddelbart regne videre på dem.
Vis et eks på opstilling når den fejler

denne returnerer begge værdier adskilt af #

Function yfind(rng As Range, rk, tal)
Dim c As Variant
Application.Volatile
For Each c In rng
If Right(c, 3) = tal And c.Offset(rk, 0) <> "" Then yfind = c.Offset(rk, 0) & "#" & c: Exit Function
Next
End Function

Skrevet ons. d. 10. marts 2010 kl. 12:37:14| #11

zjat
zjat (6.826 point)
Den skal bare hoppe over celler, hvor der ikke står noget eller hvor der står 0. Indtil den kommer til en kolonne hvor der er en værdi over 0 :)

Skrevet ons. d. 10. marts 2010 kl. 15:13:24| #12

excelent
excelent (88.505 point)
Function yfind(rng As Range, rk, tal)
Dim c As Variant
Application.Volatile
For Each c In rng
If Right(c, 3) = tal And c.Offset(rk, 0).Value > 0 Then yfind = c.Offset(rk, 0) & "#" & c: Exit Function
Next
End Function

Skrevet tor. d. 11. marts 2010 kl. 17:53:09| #13

excelent
excelent (88.505 point)
Denne er vist bedre:

Function yfind(rng As Range, rk, tal)
Dim c As Variant
Application.Volatile
For Each c In rng
If Right(c, 3) = tal And IsNumeric(c.Offset(rk, 0).Value) = True And c.Offset(rk, 0).Value > 0 Then yfind = c.Offset(rk, 0) & "#" & c: Exit Function
Next
End Function

Skrevet tor. d. 11. marts 2010 kl. 22:43:17| #14

zjat
zjat (6.826 point)
Det er sku dejligt du gider hjælpe :)

Den finder nu rigtige kolonne, den vælger bare at tage tallet fra næste række.

Kunne det være muligt, at funktionen bare fandt kolonne nummeret?

Skrevet fre. d. 12. marts 2010 kl. 18:02:03| #15

excelent
excelent (88.505 point)
Ja jeg fik vist lavet rk relativ i forhold til startrækken

Function yfind(rng As Range, rk, tal)
Dim c, x
Application.Volatile
For Each c In rng
x = Cells(rk, c.Column).Value
If Right(c, 3) = tal And IsNumeric(x) = True And x > 0 Then yfind = x & "#" & c.Column: Exit Function
Next
End Function

hvis du kun vil have kolonne returneret, så slet x & "#" &

Skrevet tir. d. 16. marts 2010 kl. 22:13:38| #16

zjat
zjat (6.826 point)
Jeg vil prøve den en af de næste par dage...glæder mig til at se resultatet :)

Skrevet tor. d. 18. marts 2010 kl. 16:01:53| #17

zjat
zjat (6.826 point)
Hej Excelent

Nu siger den at den ikke kan finde navnet "yfind" ? Burde det ikke bare være copy paste ind i excel arket?

Skrevet ons. d. 24. marts 2010 kl. 12:02:33| #18

zjat
zjat (6.826 point)
Ups... var kommet til at sætte det udenfor et modul ... men kan ikke få kolonne visningen til at virke når jeg slette det du skrev

Skrevet ons. d. 24. marts 2010 kl. 12:41:14| #19

zjat
zjat (6.826 point)
Jeg tror jeg fandt en anden løsning ved at sætte minus 1 ind i den formel jeg fik til at virke... Tak for hjælpen du får point :)

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

insert user rating fra nettet... fx IMDb.com

Oprettet den 30. juli 2010 kl. 22.41
c_skytte giver 150 point for svar | Giv et svar »

Point til supertekst

Oprettet den 30. juli 2010 kl. 15.49
gammer giver 40 point for svar | Giv et svar »

Trække fil navn ud af variabel (makro)

Oprettet den 30. juli 2010 kl. 13.46
gammer giver 60 point for svar | Giv et svar »

Seneste guides

100% højde med CSS i alle browsere
XML
Autocad / 3D Max / Revit til Salg.





Tips & Tricks fra PC World

Teaser billede

Sådan får du mest ud af batteriet på din bærbare

Batterierne i den bærbare lever sjældent op til forventningerne, men det er ikke altid batteriernes skyld. Se her hvordan du får mest muligt ud af dine batterier.


Anmeldelser fra PC World

Teaser billede

GTX460: Grafikkort med fin ydelse til rimelige penge

De store grafikkort løber med opmærksomheden, men det er i mellemklassen at de gode køb findes. Et af dem er det helt nye Nvidia GTX460. Se kortets resultater her.


Seneste blogindlæg

Teaser billede

Nu kan du slettes

Det sker af og til at en bruger ønsker at slette sin profil her på Eksperten. Det har vi haft svært ved, men nu kan du gøre det nemt og enkelt. Alt du skal gøre er at logge ind, gå ind på...


Nyheder fra PC World

Teaser billede

Test: Stream nye spil til gamle computere

Det er slut med at investere tusindvis af kroner i dyr hardware for at kunne spille de nyeste spil - amerikansk firma lader stor serverfarm klare arbejdet og streamer spillene til dig via nettet....


Nyheder fra Computerworld

Teaser billede

Test din viden med Computerworlds store sommerquiz

4. del: Brug agurketiden til at få opdateret din viden om it-branchen, og test for sjov om kollegerne på ferie eller derhjemme er lige så skarpe. Computerworld quizzer hver uge hele sommeren.



Kurser
Samarbejdspartnere

Udgiver · © 2010 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301