04. marts 2010 - 13:19Der 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).
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.
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
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 :)
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
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
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
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 & "#" &
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 :)
Synes godt om
Ny brugerNybegynder
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.