• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Waarde X wanneer cijfer in range overeenkomt

Status
Niet open voor verdere reacties.

martindeboer1988

Gebruiker
Lid geworden
5 nov 2016
Berichten
93
Ik ga dit proberen zo duidelijk mogelijk neer te zetten maar verontschuldig mij vast als het onduidelijk is.:o
In de cellen B4 t/m B6 staan waardes welke variabel zijn en elke keer handmatig ingevoerd worden.
In de cellen D4 t/m D6 wil ik in elke cel een waarde kunnen invoeren en wanneer en een waarde overeenkomt met een waarde in de range B4:B6 wil ik dat in de cel naast het matchende cijfer een "X" komt.

Kunnen jullie hierbij helpen ?Bekijk bijlage Book1.xlsx
 
Deze werkt bij mij:

Code:
=ALS(ISNB(VERGELIJKEN(D4;B4:B6;0));"";"X")
 
Helaas doet dat niet wat ik bedoel ... kreeg een name error dus heb de formule omgezet naar engels dat loste de name error op.

Code:
=IF(ISNA(MATCH(D4;B4:B6;0));"";"X")

Maar dit doet nog niet wat ik bedoel, het gaat erom dat waar ik ook in de Range D4t/m D6 het cijfer invoer dat die in de range B4 t/m B6 de waarde opzoekt en dan een kruisje achter die waarde in de C kolom zet.
 
deze in nL komt er in de buurt maar nog net niet.

Code:
=ALS(OF(ISNB(VERGELIJKEN(D4;$B$4:$B$6;0));ISNB(VERGELIJKEN(B4;$D$4:$D$6;0)));"";"X")
 
Laatst bewerkt:
Helaas wanneer ik de formule erin zet

Code:
=IF(OR(ISNA(MATCH(D4;$B$4:$B$6;0));ISNA(MATCH(B4;$D$4:$D$6;0)));"";"X")

reageert die alleen op de waarde in D4 verder niet ...:confused:
 
Ik kraak mijn brein, maar kom niet verder helaas.
 
Met VBA doet dit in principe wat je wilt.

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ThisCell1 As Range
Dim ThisCell2 As Range
    For Each ThisCell1 In Range("B4:B6")

        For Each ThisCell2 In Range("D4:D6")
      
            If ThisCell1.Value = ThisCell2.Value Then
                ThisCell1.Offset(, 1).Value = "X"
               
                Exit For
                End If
            If Not ThisCell1.Value = ThisCell2.Value Then
                ThisCell1.Offset(, 1).Value = ""
                End If
            Next ThisCell2
        Next ThisCell1
End Sub
 
Toch nog even een aanvullende vraag, ik heb het dankzij Sjonr zover dat de X achter de juiste waarde komt maar nu heb ik een datum en tijd script wat de datum en tijd achter de X zet.
Mijn probleem hiermee is dat de tijd blijft meelopen met de hudige tijd, de bedoeling is eigenlijk dat de tijd blijft staan op de tijd wanneer de waarde van de Cel X is.


Bekijk bijlage Book1_V2.xlsm

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ThisCell1 As Range
Dim ThisCell2 As Range
    For Each ThisCell1 In Range("B4:B6")

        For Each ThisCell2 In Range("D4:D6")
      
            If ThisCell1.Value = ThisCell2.Value Then
                ThisCell1.Offset(, 1).Value = "X"
               
                Exit For
                End If
            If Not ThisCell1.Value = ThisCell2.Value Then
                ThisCell1.Offset(, 1).Value = ""
                End If
            Next ThisCell2
        Next ThisCell1
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Einde
  If Target.Column = 3 Then
  If Target.Value <> "" Then
    Target.Offset(0, 2).Value = Date
    Target.Offset(0, 3).Value = Time
  Else: Target.Offset(0, 2).Value = ""
        Target.Offset(0, 3).Value = ""
  End If
  End If
  If Target.Column = 7 Then
  If Target.Value = "x" Then
    Target.Offset(0, 1).Value = Date
    Target.Offset(0, 2).Value = Time
  Else: Target.Offset(0, 9).Value = ""
        Target.Offset(0, 9).Value = ""

  End If
  End If
Einde:
End Sub
 
Verwijder die andere codes eens, want volgens mij is dit voldoende.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D4:D6")) Is Nothing Then
 Application.EnableEvents = False
   Target.Offset(, -1) = IIf(Target = Target.Offset(, -2).Value, "x", "")
   Target.Offset(, 1).Resize(, 2) = IIf(Target = Target.Offset(, -2), Array(Date, Time), "")
 Application.EnableEvents = True
End If
End Sub
 
Laatst bewerkt:
De bedoeling is volgens mij.
Als ik in D6 dezelfde waarde zet als B6 dan een x plaatsen in C6 en in E6 de datum en in F6 de tijd.

Dat doet de code.
Wat moet de code anders doen volgens jou.
Een selection_change is meestal overbodig (alleen maar irritant als je niet de enableevents = false gebruikt).
 
In de cellen B4 t/m B6 staan waardes welke variabel zijn en elke keer handmatig ingevoerd worden.
In de cellen D4 t/m D6 wil ik in elke cel een waarde kunnen invoeren en wanneer en een waarde overeenkomt met een waarde in de range B4:B6 wil ik dat in de cel naast het matchende cijfer een "X" komt.

Is de bedoeling, het gaat erom dat die checkt of de waarde in de range overeenkomt.
 
Het kan zijn dat ik het niet goed begrijp, maar je kunt toch gewoon deze formule gebruiken?
Code:
=ALS(ISNB(VERGELIJKEN(B4;D$4:D$6;0));"";"X")
 
Helaas doet dat niet wat ik bedoel ... kreeg een name error dus heb de formule omgezet naar engels dat loste de name error op.

Code:
=IF(ISNA(MATCH(D4;B4:B6;0));"";"X")

Maar dit doet nog niet wat ik bedoel, het gaat erom dat waar ik ook in de Range D4t/m D6 het cijfer invoer dat die in de range B4 t/m B6 de waarde opzoekt en dan een kruisje achter die waarde in de C kolom zet.

Bedankt voor het meedenken maar dat hebben we al geprobeerd.
Het gaat erom dat de tijd die verschijnt na waarde X blijft staan en niet meeloopt.
 
Het vastzetten van de tijd zal met VBA moeten, maar de formule die ik gaf is volgens mij goed. Die is namelijk niet hetzelfde als de formule die jij geprobeerd hebt.
 
Test dit eens.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D4:D6")) Is Nothing and target.count = 1 Then
 Application.EnableEvents = False
 Application.ScreenUpdating = False
     nw = Target
       Application.Undo
     old = Target
       Application.Undo
     Set c = Range("B4:B6").Find(nw, , , xlWhole)
      If c Is Nothing Then Set c = Range("B4:B6").Find(old, , , xlWhole)
        If Not c Is Nothing Then
          c.Offset(, 1) = IIf(nw <> "", "x", "")
          c.Offset(, 3).Resize(, 2) = IIf(nw <> "", Array(Date, Time), "")
        End If
 Application.EnableEvents = True
End If
End Sub
 
Of zet mijn formule uit post 16 in cellen C4:C6 in combinatie met deze code:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("D4:D6")) Is Nothing Then
        sn = [C4:C6]
        Application.EnableEvents = False
        For i = 1 To UBound(sn)
            If sn(i, 1) = "X" Then
                If Cells(i + 3, 5) = "" Then Cells(i + 3, 5).Resize(, 2) = Array(Date, Time)
            Else
                Cells(i + 3, 5).Resize(, 2).ClearContents
            End If
        Next
        Application.EnableEvents = True
    End If
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan