Avatar billede 5floor Nybegynder
30. marts 2006 - 14:44 Der er 16 kommentarer og
1 løsning

Finde værdi i kolonne

Hej.
Jeg har en kolonne med en masse navne. Jeg ønsker at finde et specifikt navn, derefter få fat i den tekst der står i cellen lige nedenunder. Har haft kigget på LOOKUP'sne, men kan ikke få dem til at virke efter hensigten.

ex.

A1  test1
A2  test2
A3  test3
A4  test4
A5  test5
osv osv.

Jeg kender navnet test3 og vil altså have fat i test4.

På forhånd tak

Mvh
Mads
Avatar billede mrjh Novice
30. marts 2006 - 14:55 #1
=INDEKS(A1:A100;SAMMENLIGN("Test3";A1:100;0)+1;0)
Avatar billede kabbak Professor
30. marts 2006 - 14:59 #2
mrjh > du mangler et A

=INDEKS(A1:A100;SAMMENLIGN("Test3";A1:A100;0)+1;0)
Avatar billede 5floor Nybegynder
30. marts 2006 - 15:02 #3
Hej mrhj.
Sorry, skulle lige have nævnt at jeg kører med en engelsk version.
Har forsøgt at udskifte indeks med index og sammenlign med match, men uden held.
Mads
Avatar billede 5floor Nybegynder
30. marts 2006 - 15:03 #4
Det hjalp med A'et, perfekt.
Hvis jeg nu ønsker fx. værdierne fra ikke bare cellen nedenunder, men 4 celler nedenunder, hvordan gør jeg så det?
Mads
Avatar billede 5floor Nybegynder
30. marts 2006 - 15:04 #5
så jeg både får alle 4 celler (+1,+2,+3,+4)
Avatar billede 5floor Nybegynder
30. marts 2006 - 15:19 #6
Jeg har lige et ekstra spørgsmål - håber I også kan hjælpe mig med det.
Jeg får nu det det problem, at jeg får for mange værdier med. Kan man indsætte en stop-klausul således, at hvis det næste felt er tomt, da stopper den med at hente flere værdier (jeg bruger det i en macro der er tilknyttet en knap).

Mvh
Mads
Avatar billede mrjh Novice
30. marts 2006 - 16:23 #7
Nu har du lige tabt mig. Hvad mener du med for mange værdier. Skulle du ikke bare have 4 værdier? Og i så fald skal de ind i samme flt ?
Avatar billede mrjh Novice
30. marts 2006 - 17:31 #8
Nå, men denne henter ihvertfald de 4 værdier ind i et felt og sepererer dem med et ,

Sub hent()
Dim b, c, d
    For Each a In Range(("a1"), Range("a6000").End(xlUp))
        If a = Range("b1") Then
        d = a.Row
            For d = 0 To 3
            c = c & a.Offset(d, 0) & ", "
            Next
        Range("c1") = c
        End If
    Next
End Sub
Avatar billede 5floor Nybegynder
30. marts 2006 - 17:49 #9
Hej Mrjh.
Ja, det er også vagt formuleret af mig. Måske dette eksempel forklarer det bedre:

A1  test1
A2  test2
A3  test3
A4  test4
A5  test5
A6  test6
A7  test7
A8  test8

så skal jeg have værdier fra og med cellen under test3, men ikke ALLE cellerne. En af cellerne fx. A7 vil være tom og så kommer der nye værdier derefter som jeg ikke skal bruge i denne sammenhæng. Jeg skal altså her have fat i cellerne A4:A6 (A7 stopper).

Det er ikke sådan lige at forklare, håber dette gav et bedre billede af min problemstilling.
Jeg kigger på dit eksempel senere, og skal nok vende tilbage. Er super glad for den gode og hurtige hjælp.
Mvh
Mads
Avatar billede mrjh Novice
30. marts 2006 - 22:11 #10
Denne skulle klare det du ønsker. Søgeværdi tastes i B1 og resultatet gives i C1

Sub hent()
Dim tæller, værdi
  For Each obj In Range("a1", Range("a60000").End(xlUp))
    If obj = Range("b1") Then
    tæller = obj.Row
      For tæller = 0 To 1000
        If obj.Offset(tæller, 0) = "" Then
        Exit For
        ElseIf obj.Offset(tæller + 1, 0) = "" Then
        værdi = værdi & obj.Offset(tæller, 0)
        Else
        værdi = værdi & obj.Offset(tæller, 0) & ", "
        End If
      Next
    End If
    Range("c1") = værdi
  Next
End Sub
Avatar billede 5floor Nybegynder
31. marts 2006 - 09:05 #11
Hej Mrjh.
Super, det virker perfekt. Jeg har lige skudt lidt flere point i, da spørgsmålet jo har udviklet sig væsentligt grundet mine dårlige beskrivelser.
Jeg er igang med at lære VBA, og dette er et stort skridt på vejen til at forstå tingene bedre.
En sidste ting (tror jeg :-)), hvis jeg nu vil have alle de fremkomne værdier sat ind i hver deres celle, hvordan gør jeg så det? Gemmer dem i et array og trækker dem ud en for en i hver sin celle?..men hvordan?

Mvh
Mads

ps: læg endelig et svar så du kan få dine velfortjente point.
Avatar billede 5floor Nybegynder
31. marts 2006 - 10:17 #12
Nå, jeg fandt selv ud af det:
Sub hent()
Dim tæller, arr(151)
  For Each obj In Range("a3", Range("a150").End(xlUp))
    If obj = "Pipeline" Then
    tæller = obj.Row
      For tæller = 1 To 150
        If obj.Offset(tæller, 0) = "" Then 'hvis this celle er tom
        Exit For
        ElseIf obj.Offset(tæller + 1, 0) = "" Then 'hvis next celle er tom
        arr(tæller) = obj.Offset(tæller, 0)
        Worksheets("Sheet3").Cells(30 + tæller, 7).Value = arr(tæller)
        Else
        arr(tæller) = obj.Offset(tæller, 0)
        Worksheets("Sheet3").Cells(30 + tæller, 7).Value = arr(tæller)
        End If
      Next
    End If
  Next
End Sub

Ved ikke hvor kønt det er, men det virker efter hensigten.
Tusind tak for hjælpen, jeg giver dig point så snart du smider et svar.
Hey
Avatar billede mrjh Novice
31. marts 2006 - 10:18 #13
Denne smider den ind i hver celle fra C1


Sub hent()
Dim tæller, værdi, retur
Range("c:c").ClearContents
  For Each obj In Range("a1", Range("a60000").End(xlUp))
    If obj = Range("b1") Then
    tæller = obj.Row
      For tæller = 0 To 1000
        If obj.Offset(tæller, 0) = "" Then
        Exit For
        Else
        værdi = obj.Offset(tæller, 0)
        Range("c1").Offset(tæller, 0) = værdi
        End If
      Next
    End If
  Next
End Sub
Avatar billede mrjh Novice
31. marts 2006 - 10:19 #14
Ups, du havde selv løst den. Jamen så er du jo allerede ved at forstå VBA :-)
Avatar billede 5floor Nybegynder
31. marts 2006 - 11:17 #15
...men din løsning er jo væsentligt kønnere :-)
En aller sidste ting, jeg skal bruge macroen i et andet ark end der hvor dne skal hente data (altså hente i sheet2 og skrive i sheet1). Jeg har forsøgt med med
----
For Each obj In Range("Sheet2!a3", Range("Sheet2!a150").End(xlUp))
---
men det virker ikke.
Endnu engang tak for hjælpen.
Mads
Avatar billede mrjh Novice
31. marts 2006 - 11:37 #16
Sheets("Sheet2").Range("a3", sheets("Sheet2").Range("a150").End(xlUp))
Der skal altså Sheets("Navn") foran din range og det samme hvor du vil have returneret værdien. Prøv i øvrigt hjælpemenuen, hvis du stiller dig på et argument og trykker F1 kan du faktisk læse dig frem til en hel del.
Håber det hjalp :-)
Avatar billede 5floor Nybegynder
31. marts 2006 - 11:46 #17
Tak endnu engang.
Det virker perfekt.
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