Avatar billede zjat Nybegynder
04. marts 2010 - 13:19 Der er 18 kommentarer og
1 løsning

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?
Avatar billede excelent Ekspert
04. marts 2010 - 15:28 #1
=MATCH("*";5:5;0)
Avatar billede zjat Nybegynder
04. marts 2010 - 15:41 #2
? *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"
Avatar billede zjat Nybegynder
04. marts 2010 - 15:42 #3
bøger 134  333  001  001
hej      5    7    0    1

prøver lige igen - så tallene står under hinanden :)
Avatar billede excelent Ekspert
04. marts 2010 - 15:54 #4
lav et eks i excel og send det på mail
Avatar billede zjat Nybegynder
04. marts 2010 - 21:10 #5
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.
Avatar billede excelent Ekspert
05. marts 2010 - 17:54 #6
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
Avatar billede zjat Nybegynder
08. marts 2010 - 09:20 #7
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?
Avatar billede zjat Nybegynder
08. marts 2010 - 09:46 #8
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 :)
Avatar billede zjat Nybegynder
08. marts 2010 - 09:55 #9
Derudover tror jeg funktionen stadig ikke virker :( Den skriver i hvert fald 0 hvor den burde have undersøgt videre.
Avatar billede excelent Ekspert
09. marts 2010 - 18:17 #10
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
Avatar billede zjat Nybegynder
10. marts 2010 - 12:37 #11
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 :)
Avatar billede excelent Ekspert
10. marts 2010 - 15:13 #12
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
Avatar billede excelent Ekspert
11. marts 2010 - 17:53 #13
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
Avatar billede zjat Nybegynder
11. marts 2010 - 22:43 #14
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?
Avatar billede excelent Ekspert
12. marts 2010 - 18:02 #15
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 & "#" &
Avatar billede zjat Nybegynder
16. marts 2010 - 22:13 #16
Jeg vil prøve den en af de næste par dage...glæder mig til at se resultatet :)
Avatar billede zjat Nybegynder
18. marts 2010 - 16:01 #17
Hej Excelent

Nu siger den at den ikke kan finde navnet "yfind" ? Burde det ikke bare være copy paste ind i excel arket?
Avatar billede zjat Nybegynder
24. marts 2010 - 12:02 #18
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
Avatar billede zjat Nybegynder
24. marts 2010 - 12:41 #19
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 :)
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