[EXCEL] hor - vert zoeken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jasper DS

Jasper DS

27/12/2012 11:53:40
Quote Anchor link
Hoi,

ik probeer een inventaris te maken in excel maar ik geraak er niet met mijn zoekfunctie.

Situatie:
http://www.plaatjesdump.nl/upload/2a21896a711e1e8dfd8b48fcaa622b02.png

De bedoeling is dat ik veld H3 ingeef welke maat ik zoek. In veld I3 zou die nummer dan moeten verschijnen waardoor ik die nummer uit mijn stock kan nemen.

Ik heb al geprobeerd met horizontaal zoeken en verticaal zoeken maar ik geraak er maar niet uit. Een accesDB is ook geen oplossing want niet iedereen die het moet gebruiken heeft acces.

Iemand een oplossing?
 
PHP hulp

PHP hulp

20/01/2020 01:13:47
 
Wouter J

Wouter J

27/12/2012 12:23:57
Quote Anchor link
VERT.ZOEKEN kijkt altijd naar de meest linkse kolom en daarna kun je een waarde selecteren uit de rijen ernaast. Jij wilt dat je zoekt in de rechter kolom en de linkse waarde selecteert. Je kan dus de kolommen omdraaien, maar dat is niet mooi.

Wat je dan kan doen is een combinatie van INDEX en VERGELIJKEN gebruiken. De VERGELIJKEN functie kijkt de hoeveelste waarde in de matrix de waarde bevat waarnaar je zoekt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
=VERGELIJKEN(zoekwaarde, matrix)
=VERGELIJKEN(H3, B3:B24, 0)


De INDEX functie pakt de xte waarde in de matrix die je opgeeft, dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
=INDEX(matrix, rij_getal)
=INDEX(A3:A24, 4)

Geeft de 4de waarde in de A3:A24 matrix, dus A7.

Combineer je deze dan zoek je dus in de B3:B24 matrix voor een getal die je in H3 definieert, vervolgens pak je die waarde om die dan weer te zoeken in de eerste kolom:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
=INDEX(A3:A24;VERGELIJKEN(H3;B3:B24;0))
 
Jasper DS

Jasper DS

27/12/2012 22:21:39
Quote Anchor link
Hoi Wouter,

maar nu word er nog steeds geen rekening gehouden met de stock toch? Ik Wil dus dat als ik bijvoorbeeld lengte 100 ingeef dat de computer mij zegt dat van lengte 100 nr 10 nog in stock is. Als ik op lengte 90 zoek moet hij mij nr 12 geven en niet nr 1. Mijn excuses als dat niet duidelijk was.

Alvast bedankt!
 
Obelix Idefix

Obelix Idefix

28/12/2012 08:13:51
Quote Anchor link
De oplossing van Wouter al geprobeerd?

Met de basisfunctionaliteit van verticaal zoeken gaat het je met de huidige opzet in ieder geval niet lukken. Wouter heeft dat goed verwoord.
Wouter J op 27/12/2012 12:23:57:
VERT.ZOEKEN kijkt altijd naar de meest linkse kolom en daarna kun je een waarde selecteren uit de rijen ernaast. Jij wilt dat je zoekt in de rechter kolom en de linkse waarde selecteert. Je kan dus de kolommen omdraaien, maar dat is niet mooi.


Overigens staat in je voorbeeld 2x 100 -> welke wil je dan vinden? 10 of 11?
 
Wouter J

Wouter J

28/12/2012 10:53:22
Quote Anchor link
Obelix, die van mij werkt perfect, behalve dat hij niet naar de stock kijkt, zoals Jasper al zei. Als het nummer niet in de stock voorkomt moet hij opzoek gaan naar een volgende maat.

Zoiets kan niet met een normale functie en je zult wat VBA kennis nodig hebben en een leuk macrootje moeten schrijven.

Toevoeging op 28/12/2012 12:10:12:

Oké, ik heb even een macrootje gemaakt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
Public Sub Knop1_BijKlikken()

    Dim iSearchStart As Integer
    Dim sSearchValue As String
    
    Dim iStockStart As Integer
    Dim lStockStart As Integer
    Dim rStockCell As Range
    
    Dim bStockFound As Boolean
    
    Dim sFindedIdCell As String
    Dim sFindedValueCell As String
    
    ' Nothing found yet
    bStockFound = False
    
    ' Ask the user where to search for
    sSearchValue = InputBox("Geef de maat waarnaar u zoekt op")
    
    ' Begin at A3
    iSearchStart = 3
    
    ' Stock begins at E3
    iStockStart = 3
    
    ' Foreach cell which is filled in the A column
    Do
    
        ' Save current cells in variables
        sFindedIdCell = "A" & CStr(iSearchStart)
        sFindedValueCell = "B" & CStr(iSearchStart)
        
        If Not bStockFound Then
            ' Nothing found
    
            ' Looks if the value is equal to the searched value
            If Range(sFindedValueCell).Value = sSearchValue Then
            
                lStockStart = iStockStart
            
                ' Foreach stock cell
                Do
                
                    ' Check if id is in the stock
                    If Range(sFindedIdCell).Value = Range("E" & CStr(lStockStart)).Value Then
                    
                        ' Give them a nice yellowisch background
                        Range(sFindedValueCell, sFindedIdCell).Interior.ColorIndex = 27
                        
                        ' We have found something
                        bStockFound = True
                        
                        ' Exit stock loop
                        Exit Do
                    
                    End If
                    
                    lStockStart = lStockStart + 1
                
                Loop Until IsEmpty(Range("E" & CStr(lStockStart)))
                
            Else
            
                ' Remove highlighting if exists
                Range(sFindedIdCell, sFindedValueCell).Interior.ColorIndex = 0
                
            End If
            
        Else
            ' Something found
            
            ' Remove highlighting from other cells
            Range(sFindedIdCell, sFindedValueCell).Interior.ColorIndex = 0
            
        End If
        
        iSearchStart = iSearchStart + 1
    
    Loop Until IsEmpty(Range("A" & CStr(iSearchStart)))
    
End Sub


Deze werkt met Excel 2003. Deze macro moet je nu nog vastbinden aan een shortcut (bijv. Ctrl + 4) of aan een button.
 
No One

No One

28/12/2012 12:20:27
Quote Anchor link
let wel dat als je macro gebruikt excel wel eens moeilijk kan gaan doen en de gebruiker gaat vragen om toestemming...dan moet je je gebruikers weer instrueren...
 
Jasper DS

Jasper DS

28/12/2012 13:29:58
Quote Anchor link
@Wouter, bedankt!

Ik kan wel een stukje VB maar als ik op zoeken klik springt hij telkens naar de code, waarschijnlijk moet ik dus nog iets aanpassen. Hij zegt alleen niet wat er fout is... :s
 
Wouter J

Wouter J

28/12/2012 14:00:22
Quote Anchor link
VBA heeft een geweldige tool om fouten op te stopen. In het VBA venster klik je op 'Foutenopsporing' en dan 'stap verder' en zo ga je telkens een stap verder, hij gaat dan telkens naar de regel die hij uitvoert. Zo kun je zien hoe de code loopt en in welke regel de fout zit.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.