filter vraag, filteren in 3 kolommen

Status
Niet open voor verdere reacties.

goof010

Gebruiker
Lid geworden
4 jul 2008
Berichten
9
Goedemorgen,

Het volgende is er aan de hand:

Ik heb een sheet met 800 regels. met een stuk of 12 kolommen vol met data.
de eerste drie kolommen zijn van belang deze kolommen moeten gecontroleerd worden of ze "(ongelijk) <> 0" zijn. Als een van de kolommen dus een waarde heeft anders dan 0 dan moet de gehele regel naar sheet2 gekopieerd worden. Ik heb het geprobeerd met de advanced filter. Maar dit gaat niet omdat je maar maximaal twee kolommen kan filteren.
Dus ben ik in vba aan de slag gegaan.

Dus iets van

For i = 7 To 772 'bekijk de tabel
If Range("A" & i).Value <> 0 or Range("B" & i).Value <> 0 or Range("C" & i).Value <> 0 Then CopyToRange = Range("Sheet1!A2")

Next i

kan iemand mij helpen met de juiste "If"

het betreft de volgende kolommen A7 tot A772, B7 tot B772 en C7 tot C772
is het verstandiger om te checken op bijvoorbeeld A7 B7 C7 te controleren of deze <>0 is dan de gehele regel te kopieren naar sheet2 of kan ik beter eerst kolom A7 tot A772 controleren op <>0 en dan kolom b en c? en daarna kopieren.

m'n gevoel zegt de eerste optie dus per regel te kijken en dan gelijk te kopieren.
maar mijn code mag ik niet gebruik maken van Range.
Moet ik eerst bijvoorbeeld:
m'n range definieren als in: dim rng1 as range , dim rng2 as range , etc

zodat het er als volgt uit komt te zien

For i = 7 To 772 'bekijk de tabel
If Rng1("A" & i).Value <> 0 or Rng2("B" & i).Value <> 0 or Rng3("C" & i).Value <> 0 Then CopyToRange = Range("Sheet1!A2")

Next i

alvast bedankt!
 
Met advanced filter kun je net zoveel kolommen filteren als er kolommen zijn (itt autofilter, met een beperking van 2 criteria).
Code:
For i = 7 To 772 
If Range("A" & i) & Range("B" & i) & Range("C" & i).Value <> "" Then rows(i).Copy  Range("Sheet1!A" & range("Sheet1!A1").currentregion.rows.count+1))
Next
 
Laatst bewerkt:
Ik heb nog een vraag over het kopieer gedeelte:

Rows(i).Copy = Range("Sheet1!A" & Range("Sheet1!A1").CurrentRegion.Rows.Count + 1)

regel i . kopieren = begrijp ik .
dan definieer je je range en die bestaat uit (sheet1!A en range sheet1!A1) ---> is dit de definitie van kopieren dat je je source en target destination vastlegd?
dan zeg je m'n currentregion daarvande huidige regel . en tel er 1 bij op.
dus dat zal wel betekenen dat je op de locatie waarheen gekopieerd word een regel verder de waardes neerzet.

Als ik m'n macrootje run krij ik een error : unable to set the copy property of the range class.

Waar ik uit kan opmaken dat ik m'n range niet goed heb gedefinieerd:
Rows(i).Copy = Range("Sheet!A" & Range("Sheet1!A1").CurrentRegion.Rows.Count + 1)

Als m'n source sheet "SIMATIC" heet en m'n destination SHeet!1A1 is en dit wijzig in bovenstaande regel geeft hij nog steeds dezelfde error.
Of wordt m'n source al vastgelegd d.m.v currentregion??

Avast bedankt weer!

@snb : thanks for the fast reply!
 
Vorige suggestie aangepast: achter copy moet geen = staan.
Verwijder die dus.
 
Hij werkt! Mijn dank is zeer groot!
Alvast een prettig weekend!

M.v.g Govert
 
Mijn vraag is toch nog niet helemaal opgelost.

Ik kan nu eenvoudig op basis van een aantal criteria regels kopieren naar een andere sheet
maar.... In sommige staan ook formules. en ik wil alleen de waardes kopieren. Waar moet ik mijn ".value" of "pastespecial.xlvalue" aan vast plakken??
Alvast bedankt weer!
m.v.g Govert



For i = 4 To 775
If Range("A" & i) & Range("B" & i) & Range("C" & i).Value <> "" Then

If Range("A" & i) & Range("B" & i) & Range("C" & i).Value >= 1 Then

Rows(i).Copy Range("Sheet1!A" & Range("Sheet1!A2").CurrentRegion.Rows.Count + 1)

End If
End If

Next

For i = 782 To 789
If Range("A" & i) & Range("B" & i) & Range("C" & i).Value <> "" Then

If Range("A" & i) & Range("B" & i) & Range("C" & i).Value >= 1 Then

Rows(i).Copy Range("Sheet1!A" & Range("Sheet1!A2").CurrentRegion.Rows.Count + 1)

End If
End If

Next
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan