[opgelost] VBA Excel vergelijken van 2 cellen in kolom

Status
Niet open voor verdere reacties.

Snowgasm

Nieuwe gebruiker
Lid geworden
15 feb 2010
Berichten
4
Hallo,

Ik ben op zoek naar een VBA code die mij het volgende laat doen:

Ik heb kolom B, waarin tekstuele waarden staan. Deze dienen vergeleken te worden (dus als B1 = B2 en B2 = B3).

Indien waarden B1 en B2 gelijk zijn moet statische waarde x worden gezet in cel A2, indien B1 ongelijk is aan B2 moet in kolom A2 waarde x + y gezet worden. Als B2 = B3 moet waarde x+y worden gehanteerd (oftewel A2) in cel A2. Indien B2 niet gelijk is aan B3 moet in cel A3 x+y+y worden gehanteerd.

Kortweg, als de tekstuele waarde wijzigt dient corresponderende cel A worden opgehoogd met waarde y.

Kan iemand hier iets mee?

Al vast bedankt.

Groet,

Snow
 
Laatst bewerkt:
Zo:
Code:
Private Sub CommandButton1_Click()
   x = 5
   y = 10
   With Sheets(1)

      If [B1] = [B2] Then 
         [A2] = x
      Else
         [A2] = x + y
      End If

      For t% = 3 To 25
         If .Cells(t%, 2) = .Cells(t% - 1, 2) Then
            .Cells(t%, 1) = .Cells(t% - 1, 1)
         Else
            .Cells(t%, 1) = .Cells(t% - 1, 1) + y
         End If
      Next t%
   End With
End Sub
Dit stukje uit jouw tekst: "gehanteerd (oftewel A2) in cel A2." moet zijn: "gehanteerd (oftewel A2) in cel A3."

Groet, Ed
 
Hee ed, dit is precies wat ik bedoel. Echter moet dit over een range worden uitgevoerd zonder specifiek einde (loop dus).

Zou je je magie daarop kunnen loslaten? Dit is namelijk al fantastisch!!!! :thumb::thumb:
 
Code:
Private Sub CommandButton1_Click()
  [A1]=5
  for each cl in sheets(1).columns(2).specialcells(2)
    if cl.row>1 then cl.offset(,-1)=cl.offset(-1,-1) + iif(cl= cl.offset(-1),10,0) 
  next 
End Sub
 
Laatst bewerkt:
Code:
Private Sub CommandButton1_Click()
   x = 5
   y = 10
   With Sheets(1)
      .[A1] = x
      For t% = 2 To Range("B" & Rows.Count).End(xlUp).Row
         If .Cells(t%, 2) = .Cells(t% - 1, 2) Then
            .Cells(t%, 1) = .Cells(t% - 1, 1)
         Else
            .Cells(t%, 1) = .Cells(t% - 1, 1) + y
         End If
      Next t%
   End With
End Sub
Izdizwatjoewant?

Groet, Ed
 
Doe maar een kratje Amstel.
Zet je de vraag hieronder even op 'opgelost'?

Groet, Ed
 
@snb
Code:
Private Sub CommandButton1_Click1()
  [A1] = 5
  For Each cl In Sheets(1).Columns(2).SpecialCells(2)
    If cl.Row > 1 Then cl.Offset(, -1) = cl.Offset(-1, -1) + IIf(cl = cl.Offset(-1), [COLOR="Red"]0, 10[/COLOR])
  Next
End Sub

@snowgasm
ik zou toch gaan voor bovenstaande code, doet exact hetzelfde maar met beduidend minder regels, sneller bij grotere bereiken en makkelijker te begrijpen
 
Hoi Rudi,


Ook jij bedankt voor het meedenken. Ik zal de code eens testen, minder regels is natuurlijk altijd goed. Zeker gezien dit onderdeel wordt van een behoorlijk uitgebreid stukje code.
:thumb:
 
En als je gaat voor snelheid:

Code:
Private Sub CommandButton1_Click1()
  [A1] = 5
  sq=[A1].Currentregion
  for j=2 to ubound(sq)
    sq(j,1)=sq(j-1,1)+iif(sq(j,2)=sq(j-1,2),0,10)
  next
  [A1].currentregion=sq
End Sub
 
Zeg heren, jullie zijn toch niet op mijn kratje Amstel uit hè?

Groet, Ed
 
Een belg en Amstel :p :p :p
Dat is als vuur en water :D
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan