• 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.

rij verwisselen na vertikaal zoeken

Status
Niet open voor verdere reacties.

nonono

Gebruiker
Lid geworden
28 jan 2009
Berichten
289
Ik heb een werkblad met een kolom, waarvan de cellen deels gevuld zijn.
Bij oplopend sorteren worden eerst de “lege” cellen met een nulwaarde getoond volgens onderstaande code:
Code:
Sub test_sorteer_kolom_H_descending()
'
    Range("A11:H20").Select
    Selection.Sort Key1:=Range("H11"), Order1:=xlDescending, Header:=xlGuess _
        , OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    Range("A10").Select
End Sub
Ik wil de gevulde cellen van kolom H naar het begin van de range in dezelfde volgorde.
Ik denk, dat dit zou kunnen door:
- de waarde van de eerste cel (H11) te bepalen
- is deze nul dan in kolom naar beneden verder totdat cel met waarde >0 gevonden wordt (H18)
- dan rij H11 met H18 omwisselen
- vervolgens naar de volgende cel (H12), zoek en verwissel (H19)
- als “gevulde” cellen omgewisseld zijn dan stopt het process, aangezien er geen gevulde cellen meer zijn

Op deze manier heb je een oplopende sorteervolgorde met waarden >0 aan het begin van een range.
Of is er een eenvoudiger methode?

Bekijk bijlage test_sorteer_opl_1.xls
 
Ik wil de gevulde cellen van kolom H naar het begin van de range in dezelfde volgorde.
Of is er een eenvoudiger methode?
Op deze manier heb je een oplopende sorteervolgorde met waarden >0 aan het begin van een range.
Deze twee spreken elkaar tegen toch?
Hierbij dan toch een poging zonder VBA op Sheet2.
Heb er in het voorbeeld maar andere aantallen van gemaakt, opdat het beter opvalt wat je bedoeld.
In mijn achterhoofd zegt iets mij dat je deze dan weer gesorteerd wil in oplopend volgorde.
 

Bijlagen

Laatst bewerkt:
nonono , wat wil je waar krijgen , typ het anders manueel met een kleurtje hoe het na de sort er moet uitzien .
deze macro doet hetzelfde als die van jou
Code:
Sub test_sorteer_kolom_H_descending()

    [A11:H20].Sort [H11], xlAscending
    
End Sub
met dit verschil dat ik Ascendig sorteer
 
Deze code werkt inderdaad prima en is verrassend eenvoudig.

De 2 regels spreken elkaar volgens mij niet tegen.
De 1ste regel zegt in feite ook “… cellen met een eaarde >0 aan het begin van de range”

Trucker 10 heeft inderdaad dezelfde code zoals in de aangepaste versie van test _sorteer_opl_1.xls‎ .

Bedankt voor de snelle reaktie.

Groet Nono :thumb:
 
nonono , Is je vraag nu opgelost ? je post mijn inziens het bestandje van Harry zonder verdere ..........
Indien beantwoord zet je de vraag dan als opgelost , indien niet iets meer duidelijkheid wat , want mijn code is niet dezelfde als in het bestandje , wel heeft mijn code hetzelfde resultaat als de formule van Harry .
 
Wellicht heb ik toch voor enige verwarring gezorgd.
Bij het opschonen van de voorbeeld file is bij het verwijderen van de overtollige macro’s ook de Ascending macro verdwenen.
Ik ben iets te voorbarig geweest door te zeggen dat het opgelost is.

Ik heb een gewijzigd voorbeeld toegevoegd met de code van de voorgestelde macro’s.
Bij oplopend sorteren worden toch eerst de nullen getoond.
In kolom J heb ik aangegeven hoe kolom H er uit zou moeten zien na “oplopend” sorteren.
Dan staan de waarden >0 aan het begin van een range.
Het resultaat komt dan automatisch in sheet2.

Groet Nono

Bekijk bijlage test_sorteer_opl_3.xls
 
pas je formule aan zodat je bij geen waarde geen 0 hebt staan maar een lege cel ""
 
Inderdaad op H11 de formule:
Code:
=IF((D11*F11)>0,(D11*F11),"")
dan verloopt de oplopende sorteervolgorde goed en staan de waarden bovenaan in de range.

Maar dan treedt het problem op bij aflopend sorteren. Dan worden de waarden aan de onderzijde van de range getoond.

Dus het problem is nu omgekeerd.

Groet Nono
 
Ik heb het sorteren oplopend / aflopend voor kolom C nog toegevoegd en dat levert geen problemen op.

Het probleem bij aflopend sorteren van kolom H is, dat de lege cellen als tekst worden gezien en niet als nummeriek.

Groet Nono

Bekijk bijlage test_sorteer_opl_4.xls
 
bij deze nog een poging :rolleyes:
Code:
Sub kolom_H_ascending()
'
    [A11:H20].Sort [H11], xlAscending, , , , , xlSortTextAsNumbers
   
End Sub
Sub kolom_H_descending()
'
    [A11:H20].Sort [H11], xlDescending, , , , , xlSortTextAsNumbers
    
End Sub
dat de lege cellen als tekst worden gezien en niet als nummeriek.
nu worden ze als nummer gezien .
 
Dan worden de waarden aan de onderzijde van de range getoond.

Dus het problem is nu omgekeerd.

Groet Nono

van de range je duid een range aan waarin je wil sorteren , van rij 11 tot rij 20 maar jij wil enkel dat de 3 gevulde rijen maar van plaats wisselen . een hulpkolom met een formule erin dat kijkt hoeveel rijen er gevuld zijn en daarop de range bepalen in de macro ( vluge gedachte niet zeker dat het werkt :eek: )
 
Bedankt voor je inspanning, maar het lukt nog niet.

Ik heb de laatste 2 codes geprobeerd:
- kolom_H_ascending werkt
- kolom_H_descending gaat weer in de fout. Na sorteren staan waarden onderaan in de range.

Groet Nono
 
Helaas Harry. In deze versie treedt hetzelfde probleem op:

- kolom_H_ascending werkt
- kolom_H_descending gaat weer in de fout. Na sorteren staan waarden onderaan in de range.

Groet Nono
 
Bedoel je het zo voor Descending?
Code:
Sub kolom_H_descending()
       [A11:I20].Sort [H11], xlDescending
End Sub
 
Zoals in kolom D.

Het is een oplopende volgorde en de waarden staan aan het begin van de cel.

Groet Nono
 
Ter voorkoming van verwarring het volgende:
gedurende het zoeken naar een oplossing zijn er 2 versies ontstaan.
De 1ste versie is met “.0)” en de 2de versie met “. “”)” in de H kolom.

In de table heb ik aangegeven waar iets werkt en waar niet.
Het probleem zit ‘m in de H kolom.

Welke versie maakt in principe niet uit.
Het resultaat moet zijn, dat de waarden altijd bovenaan in de range staan onafhankelijk van de aard van de sorteervolgorde.

Groet Nono

Code:
			                     HSV		     trucker 10
							
	H11 :	                  .. ..(D11*F11),0)			 .. ..(D11*F11),"")	
			 				
kolom_C_ascending()			√				        √

kolom_C_descending()			√				        √

kolom_H_ascending			X				        √

kolom_H_descending			√				        X
 
Ik doe er het bestandje bij, want snappen doe ik het nog steeds niet als je dit niet bedoeld.
 

Bijlagen

In tread #16 stel ik de vraag welke en in tread #17 komt het antwoord zoals kolom D , dit antwoord is te vinden , nu wil je gaan shoppen op hoog en laag , " Walter Cappiau " van hoger , lager is met pensioen en Aurore is spoorloos .
Ik wil gerust meedenken met een oplossing , maar de feedback is beneden alle peil en duid nogmaals op een range dat je wil sorteren , anders een macro die de lege rijen leegmaakt + een macro die nadien de sheet terug op zijn effen zet enz. Alles gaat maar is het nodig .
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan