Note: The other languages of the website are Google-translated. Back to English
English English
  • documenten
  • Excel
  • Hoe verplaats je de hele rij naar de onderkant van het actieve blad op basis van de celwaarde in Excel?

Hoe verplaats je de hele rij naar de onderkant van het actieve blad op basis van de celwaarde in Excel?

Probeer de VBA-code in dit artikel om de hele rij naar de onderkant van het actieve blad te verplaatsen op basis van de celwaarde in Excel.

Verplaats de hele rij naar de onderkant van het actieve blad op basis van de celwaarde met VBA-code


Verplaats de hele rij naar de onderkant van het actieve blad op basis van de celwaarde met VBA-code

Bijvoorbeeld, zoals onderstaand screenshot getoond, als een cel in kolom C een bepaalde waarde "Gereed" bevat, verplaats dan de hele rij naar de onderkant van het huidige blad. Ga als volgt te werk.

1. druk op anders+ F11 toetsen tegelijkertijd om het Microsoft Visual Basic voor toepassingen venster.

2. In de Microsoft Visual Basic voor toepassingen venster klikt Invoegen > Module. Kopieer en plak vervolgens de onderstaande VBA-code in het venster.

VBA-code: verplaats de hele rij naar de onderkant van het actieve blad op basis van de celwaarde

Sub MoveToEnd()
    Dim xRg As Range
    Dim xTxt As String
    Dim xCell As Range
    Dim xEndRow As Long
    Dim I As Long
    On Error Resume Next
    If ActiveWindow.RangeSelection.Count > 1 Then
      xTxt = ActiveWindow.RangeSelection.AddressLocal
    Else
      xTxt = ActiveSheet.UsedRange.AddressLocal
    End If
lOne:
    Set xRg = Application.InputBox("Select range:", "Kutools for Excel", xTxt, , , , , 8)
    If xRg Is Nothing Then Exit Sub
    If xRg.Columns.Count > 1 Or xRg.Areas.Count > 1 Then
        MsgBox " Multiple ranges or columns have been selected ", vbInformation, "Kutools for Excel"
        GoTo lOne
    End If
    xEndRow = xRg.Rows.Count + xRg.Row
    Application.ScreenUpdating = False
    For I = xRg.Rows.Count To 1 Step -1
        If xRg.Cells(I) = "Done" Then
           xRg.Cells(I).EntireRow.Cut
           Rows(xEndRow).Insert Shift:=xlDown
        End If
    Next
    Application.ScreenUpdating = True
End Sub

Opmerking:: In de VBA-code, "Klaar ”Is de celwaarde waarop u de hele rij wilt verplaatsen op basis van. U kunt het naar behoefte wijzigen.

3. druk de F5 sleutel om de code uit te voeren, dan in de pop-up Kutools for Excel dialoogvenster, selecteer het kolombereik waarin de bepaalde waarde voorkomt en klik vervolgens op het OK knop.

Na het klikken op de OK knop, wordt de volledige rij die de waarde "Gereed" in de opgegeven kolom bevat automatisch naar de onderkant van het gegevensbereik verplaatst.


Gerelateerde artikelen:


De beste tools voor kantoorproductiviteit

Kutools voor Excel lost de meeste van uw problemen op en verhoogt uw productiviteit met
80%

  • visfuik: Snel invoegen complexe formules, grafieken en alles wat je eerder hebt gebruikt; Versleutel cellen met wachtwoord; Maak een mailinglijst en stuur e-mails ...
  • Super Formula-balk (bewerk eenvoudig meerdere regels tekst en formule); Lay-out lezen (gemakkelijk grote aantallen cellen lezen en bewerken); Plakken in gefilterd bereik...
  • Voeg cellen / rijen / kolommen samen zonder gegevens te verliezen; Gespleten cellen inhoud; Combineer dubbele rijen / kolommen... Voorkom dubbele cellen; Vergelijk Ranges...
  • Selecteer Dupliceren of Uniek Rijen; Selecteer lege rijen (alle cellen zijn leeg); Super zoeken en fuzzy zoeken in veel werkboeken; Willekeurige selectie ...
  • Exacte kopie Meerdere cellen zonder de formuleverwijzing te wijzigen; Maak automatisch verwijzingen naar meerdere bladen; Plaats kogels, Selectievakjes en meer ...
  • Extraheer tekst, Tekst toevoegen, Verwijderen op positie, Ruimte verwijderen; Paging-subtotalen maken en afdrukken; Converteren tussen celinhoud en opmerkingen...
  • Super filter (bewaar en pas filterschema's toe op andere bladen); Geavanceerd sorteren per maand / week / dag, frequentie en meer; Speciaal filter door vet, cursief ...
  • Combineer werkmappen en werkbladen; Tabellen samenvoegen op basis van sleutelkolommen; Gegevens splitsen in meerdere bladen; Batch Converteer xls, xlsx en PDF...
  • Meer dan
    300
    krachtige functies
    . Ondersteunt Office/Excel
    2007-2019 en 365
    . Ondersteunt alle talen. Eenvoudig te implementeren in uw onderneming of organisatie. Volledige functies
    30
    -dag gratis op proef. 60 dagen niet-goed-geld-terug-garantie.
kte tabblad 201905

Office-tabblad Brengt een interface met tabbladen naar Office en maakt uw werk veel gemakkelijker

  • Schakel bewerken en lezen met tabbladen in Word, Excel, PowerPoint in, Publisher, Access, Visio en Project.
  • Open en maak meerdere documenten in nieuwe tabbladen van hetzelfde venster in plaats van in nieuwe vensters.
  • Verhoogt uw productiviteit met
    50%
    , en vermindert elke dag honderden muisklikken voor u!
officetab onderkant
Comments (26)
Rated 5 uit 5 · 1 ratings
Deze opmerking is gemaakt door de moderator op de site
Hoe kan ik ervoor zorgen dat de kutools specifieke rijen selecteert zonder gebruikersinvoer?
Deze opmerking is gemaakt door de moderator op de site
Hallo Anon,
Het spijt me, ik weet niet zeker wat je bedoelt. Zou leuk zijn als je het nog eens kunt uitleggen of een screenshot kunt geven om te laten zien wat je probeert te doen.
Bedankt voor je commentaar.
Deze opmerking is gemaakt door de moderator op de site
Hallo Crystal, deze code werkt geweldig, bedankt. Ik zou graag alle rijen met het woord "Voltooid" in kolom D naar de bovenkant van de tabel willen verplaatsen (invoegen in rij 3). Is dat mogelijk? dan zou ik al deze volledige rijen willen verwijderen die "de datum van gisteren" bevatten in kolom V.
Deze opmerking is gemaakt door de moderator op de site
Hallo. Dit is bijna perfect voor wat ik wil. Ik heb een deel van hetzelfde verzoek als Anon had om dit te laten werken zonder gebruikersinvoer, samen met enkele extra's.

Ik vraag me af of het mogelijk is om de enige kolom die wordt doorzocht als i4 tot i50 te hebben en deze automatisch te laten draaien bij open of wanneer de i-kolom wordt bewerkt. Ook als het mogelijk zou zijn om de rijen naar de onderkant van het blad te verplaatsen zonder lege rijen tussen "klaar" rijen en "nee" rijen. Als ik momenteel i4:i50 selecteer en als ik alleen gegevens tot rij 25 heb, worden de "klaar"-rijen oplopend vanaf rij 50 in plaats van rij 25 geplakt. Het aantal rijen in mijn blad verandert voortdurend en zou niet naar meer dan 50. Bedankt voor de hulp.
Deze opmerking is gemaakt door de moderator op de site
Hallo Brandon,
Sorry kan je daarbij helpen. Bedankt voor je reactie.
Deze opmerking is gemaakt door de moderator op de site
Hallo, is er een manier om dit aan te passen zodat het naast het einde een rij ergens anders in hetzelfde blad wordt verplaatst? Ik heb een blad met bestelinformatie voor gedateerde bestellingen en aanstaande bestellingen die nog moeten worden gedateerd en ik heb het zo dat wanneer ik een "X" in kolom A plaats, dingen oplichten en vetgedrukt zijn, afhankelijk van deel #'s en verzendlocaties. Nu moet ik de nieuw gedateerde (verzenddatum) fysiek knippen en plakken zodat deze bovenaan past, gesorteerd op datum (1e tot en met einde van de maand). Ik heb tot nu toe alles voorwaardelijk kunnen opmaken, maar ik denk niet dat ik op die manier rijen kan verplaatsen. Ik vroeg me af of VBA dit zou kunnen doen, een rij verplaatsen wanneer een datum wordt ingevoerd om in de andere gedateerde rijen te passen?
Deze opmerking is gemaakt door de moderator op de site
Hallo, de enige manier waarop ik dit kan laten werken, is als ik de macro "uitvoer" in het Visual Basic-subscherm. Is het mogelijk om deze VBA-code automatisch te laten uitvoeren zodra de gebruiker "Klaar" typt? Elke keer dat ik het Kutools for Excel-dialoogvenster krijg om de parameters te vragen waarop ik de code vraag om op te zoeken. Ik heb hier min of meer omheen gewerkt door: xTxt = ActiveSheet.UsedRange.AddressLocal te vervangen door de parameters die ik nodig heb doorzocht en op enter te drukken. Maar het zou handiger zijn als het automatisch de wijzigingen aanbracht nadat "Gereed" was ingevoerd. Dank u!
Deze opmerking is gemaakt door de moderator op de site
Hallo Anon,
De onderstaande VBA-code kan u een plezier doen. Probeer het alsjeblieft.
Klik met de rechtermuisknop op de bladtab (het blad bevat de gegevens die u naar beneden wilt verplaatsen), selecteer Bekijk code in het contextmenu en kopieer de onderstaande code naar het codevenster.

Particulier subwerkblad_Wijziging (ByVal-doel als bereik)
'Bijgewerkt door' Extendoffice 20190925
Dim xRg als bereik
Dim xIRg als bereik
Dim xTxt als string
Dim xCell als bereik
Dim xEndRow zo lang
Dim ik zo lang
Dim xDStr als string
On Error Resume Next
xDStr = "C:C"
Stel xRg = Me.Bereik (xDStr) in
Stel xIRg = Application.Intersect(Target, xRg) in
Als xIRg niets is, sluit dan Sub af
Application.ScreenUpdating = False
Application.EnableEvents = False

Als Target = "Klaar" Dan
xEndRow = ActiveSheet.UsedRange.Rows.Count + 1
Target.EntireRow.Cut
Rijen (xEndRow). Shift invoegen:=xlDown
End If
Application.EnableEvents = Waar
Application.ScreenUpdating = True
End Sub
Deze opmerking is gemaakt door de moderator op de site
Hallo kristal,

Bedankt voor het plaatsen van deze code. Ik zou graag willen weten hoe ik de code kan krijgen om de rij terug naar boven te verplaatsen als Gereed ten onrechte is getypt. Kan een secundaire code worden toegevoegd voor "verplaatsen" om het naar boven te verplaatsen en "klaar" voor de onderkant?
Deze opmerking is gemaakt door de moderator op de site
hallo crystal de code die je aan anon hebt gegeven om de vba-code automatisch te laten uitvoeren is geweldig, maar ik kan geen rijen invoegen is er een mogelijke manier om het te repareren
Deze opmerking is gemaakt door de moderator op de site
Hallo Sarah,
Excuses voor het ongemak. Probeer de onderstaande VBA eens. Bedankt.

Particulier subwerkblad_Wijziging (ByVal-doel als bereik)

'Bijgewerkt door' Extendoffice 20200424

Dim xRg als bereik

Dim xIRg als bereik

Dim xTxt als string

Dim xCell als bereik

Dim xEndRow zo lang

Dim ik zo lang

Dim xDStr als string

Bij fout Ga naar Err1

xDStr = "C:C"

Stel xRg = Me.Bereik (xDStr) in

Stel xIRg = Application.Intersect(Target, xRg) in

Als xIRg niets is, sluit dan Sub af

Application.ScreenUpdating = False

Application.EnableEvents = False



Als Target.Value = "Gereed" Dan

'xEndRow = ActiveSheet.UsedRange.Rows.Count + 1

xEndRow = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Rij + 1

Target.EntireRow.Cut

Rijen (xEndRow). Shift invoegen:=xlDown

End If

Fout1:

Application.EnableEvents = Waar

Application.ScreenUpdating = True

End Sub
Deze opmerking is gemaakt door de moderator op de site
Ik heb geprobeerd deze code te kopiëren, maar er staat nog steeds ongeldig gebruik van mij.
Deze opmerking is gemaakt door de moderator op de site
Wat als u alleen rijen onder kolom A en B hoeft te verplaatsen; dan moet kolom C behouden blijven? moeten we nog steeds EntireRow gebruiken?
Deze opmerking is gemaakt door de moderator op de site
Hallo Jerel,
Probeer de onderstaande code. Hoop dat ik kan helpen.

Sub MoveToEnd()

'Bijgewerkt door' Extendoffice 20200717

Dim xRg als bereik

Dim xTxt als string

Dim xCell als bereik

Dim xEndRow zo lang

Dim xIntR als geheel getal

Dim ik zo lang

Dim xWs als werkblad

On Error Resume Next

Als ActiveWindow.RangeSelection.Count> 1 Dan

xTxt = ActiveWindow.RangeSelection.AddressLocal

Anders

xTxt = ActiveSheet.UsedRange.AddressLocal

End If

lEen:

Set xRg = Application.InputBox ("Selecteer bereik:", "Kutools for Excel", xTxt, , , , , 8)

Als xRg niets is, sluit dan Sub af

Als xRg.Columns.Count > 1 Of xRg.Areas.Count > 1 Dan

MsgBox " Meerdere bereiken of kolommen zijn geselecteerd ", vbInformation, "Kutools for Excel"

Ga naar lOne

End If

xEndRij = xRg.Rijen.Count + xRg.Rij

xWs = xRg.Werkblad

xWs.Activeren

Application.ScreenUpdating = False

Voor I = xRg.Rows.Count To 1 Step -1

Als xRg.Item(I) = "Klaar" Dan

Rijen (xEndRow). Shift invoegen:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

xIntR = xRg.Cellen(I).Rij

Bereik ("A" & xIntR & ":B" & xIntR).Selecteer

Selectie.Knippen

Bereik ("A" & xEndRow).Selecteer

ActiveSheet.Paste

xEndRij = xEndRij + 1



End If

Volgende

Application.ScreenUpdating = True

End Sub
Deze opmerking is gemaakt door de moderator op de site
Hallo,



Ik heb problemen met het gebruik van de verstrekte code en krijg steeds een syntaxisfout. Ik ben super nieuw om uit te blinken en heb geprobeerd mezelf te leren wat ik nodig heb om mijn thuisbedrijf te runnen. Ik heb een inventaris-spreadsheet-ID en wil items in een kolom als GEPENSIONEERD kunnen aanwijzen? ja/nee en zo ja, dan gaan ze naar de onderkant van het werkblad, in alfabetische volgorde, zonder een spatie achter te laten in het hoofdspreadsheet. we hebben items die volledig met pensioen gaan en dan terugkomen voor een speciale heruitgave in beperkte hoeveelheden en id zoals deze items onder aan mijn blad zijn opgeslagen totdat ze weer beschikbaar zijn. Dank u.
Deze opmerking is gemaakt door de moderator op de site
Hallo, ik heb een taak die mijn baas me heeft gegeven. Het leek eerst eenvoudig genoeg, maar nu ben ik in de war over hoe verder te gaan. We hebben een Forecast-blad met de mogelijke banen en ze hebben een kolom "Orderwaarschijnlijkheid" op %. Hij wil dat ik 3 verschillende vellen opzet met 100-70%, 69%-41 en 40-0%. Het idee is dat wanneer de informatie in het hoofdblad wordt getypt, wanneer het percentage wordt ingevoerd, het automatisch wordt gekopieerd naar het volgende blad dat overeenkomt met die percentielwoede. Ik deed dit met een eenvoudige ALS (en formule. Ik moet echter sorteren om de lege cellen te verliezen en het er schoner uit te laten zien. Als ik dan sorteer, als ik een nieuwe Oder Probability-aanbieding aan het hoofdblad toevoeg, gebeurt dit niet automatisch toon het, zonder de sortering te verwijderen en vervolgens opnieuw te sorteren. Mijn excuses als deze vraag niet van haar is. Maar is er een codereeks die ik zou kunnen invoeren om dit probleem gemakkelijker op te lossen? De enige waarde die bepaalt of de hele rij wordt verplaatst, is de Kolom K. lijkt eenvoudig, maar hoe complex ook voor deze Excel-beginner. Alvast bedankt voor uw hulp.
Deze opmerking is gemaakt door de moderator op de site
Hoe werkt het als "Klaar" slechts een deel van een kolomreeks is. Stel dat mijn kolommen een waarde bevatten zoals - XYZDone, ABCDone, 123Done etc, kan ik er dan gewoon uit filteren op basis van gedeeltelijke string "Klaar"?
Deze opmerking is gemaakt door de moderator op de site
Hallo Kristal,
Bedankt voor je hulp, de code werkt prima, maar in plaats van de rij naar de onderkant van een pagina te verplaatsen, hoe verplaats ik deze naar een ander tabblad, bijvoorbeeld een "Gesloten" tabblad?
Deze opmerking is gemaakt door de moderator op de site
Hoi,
Sorry dat ik zo laat reageer.
In de code hoeft u alleen de regel te wijzigen "Als xRg.Cells(I) = "Klaar" Dan" naar Als xRg.Cells(I) "*Klaar*" leuk vinden, dan om het voor elkaar te krijgen.
Deze opmerking is gemaakt door de moderator op de site
Ik heb een lijst met selectievakjes dat wanneer een kolom is aangevinkt, ik deze nodig heb om naar een gedeelte van de spreadsheet te gaan en als de andere is aangevinkt, gaat deze naar het einde. Ik heb honderd verschillende manieren geprobeerd om dit te doen, kan iemand hiermee helpen?
Deze opmerking is gemaakt door de moderator op de site
Hoi! Ik heb zojuist kutools gekocht zodat ik deze vba-code naar mijn Excel-blad kon ***en, omdat het een uitstekende functie is om te gebruiken! De bovenstaande instructies zijn eenvoudig en nuttig; zodra ik echter bij de stap kom waar de code wordt gekopieerd en in het venster wordt geplakt en op F5 druk, stuurde het me naar een vak om de macro een naam te geven en te maken. Dat heb ik gedaan, maar nu ga ik niet naar het dialoogvenster, zodat ik het celbereik kan selecteren. Een compileerfout van "invalid outside procedure" verschijnt. Help alstublieft!
Deze opmerking is gemaakt door de moderator op de site
Hoi,
Het spijt me u te hebben misleid. De code kan op zichzelf worden gebruikt en vereist geen aankoop van Kutools. Als je het niet nodig hebt, stuur dan een e-mail naar sales@extendoffice.com om een ​​terugbetaling te vragen.
Om de code soepel te laten werken, moet u ervoor zorgen dat uw cursor in het codevenster staat (klik op een willekeurig woord in de code) en druk vervolgens op de F5 toets om de code uit te voeren. Vervolgens verschijnt het dialoogvenster om een ​​celbereik te selecteren.
Nogmaals excuses voor het ongemak.
Deze opmerking is gemaakt door de moderator op de site
mij alweer! Ik heb de code uitgezocht. Ik had de code handmatig gekopieerd en geplakt in plaats van de kopieerknop rechtsboven in het scherm te gebruiken. Ik heb "klaar" veranderd in "x". Ik heb de code in elk van de werkbladen uitgevoerd. Als ik "x" begin in te voeren in die cellen binnen de geselecteerde celbereiken vanuit het dialoogvenster, gebeurt er niets (rijen gaan niet automatisch naar beneden). Ik ben hier ZEER NIEUW in....bedankt voor je hulp!
Deze opmerking is gemaakt door de moderator op de site
Hoi,
Als u de rij automatisch naar beneden wilt verplaatsen bij het invoeren van het opgegeven woord, probeer dan de volgende VBA-code.
Opmerking:: u moet de code invoeren in het venster Werkbladcode (klik met de rechtermuisknop op de bladtab en selecteer Bekijk code in het contextmenu).

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Updated by Extendoffice 20220520
    Dim xRg As Range
    Dim xTxt As String
    Dim xCell As Range
    Dim xEndRow As Long
    Dim I As Long
    On Error Resume Next
    If ActiveWindow.RangeSelection.Count > 1 Then
      xTxt = ActiveWindow.RangeSelection.AddressLocal
    Else
      xTxt = ActiveSheet.UsedRange.AddressLocal
    End If
lOne:
    Set xRg = Range("C2:C18")
    If xRg Is Nothing Then Exit Sub
    If xRg.Columns.Count > 1 Or xRg.Areas.Count > 1 Then
        MsgBox " Multiple ranges or columns have been selected ", vbInformation, "Kutools for Excel"
        GoTo lOne
    End If
    xEndRow = xRg.Rows.Count + xRg.Row
    Application.ScreenUpdating = False
    For I = xRg.Rows.Count To 1 Step -1
        If xRg.Cells(I) = "Done" Then
           xRg.Cells(I).EntireRow.Cut
           Rows(xEndRow).Insert Shift:=xlDown
        End If
    Next
    Application.ScreenUpdating = True
End Sub
Deze opmerking is gemaakt door de moderator op de site
Hallo Kristal,

Bedankt voor alle geweldige codes. Is er een manier om dit te doen zonder de Kutools? Ik zie ook geen dialoogvenster om een ​​celbereik te selecteren, het verschijnt niet voor mij.

Dank je,
Jaz
Rated 5 uit 5
Deze opmerking is gemaakt door de moderator op de site
Hallo Jaz,
U kunt het celbereik rechtstreeks in de code opgeven zonder dat u het dialoogvenster Kutools hoeft te openen om het bereik te selecteren.
Vervang in de code de volgende regel:
Set xRg = Application.InputBox("Select range:", "Kutools for Excel", xTxt, , , , , 8)

met:
Set xRg = Range("C2:C13")
Er zijn nog geen reacties geplaatst
Laat uw commentaar
Posten als gast
×
Beoordeel dit bericht:
0   Personages
Voorgestelde locaties

Volg ons

Copyright © 2009 - www.extendoffice.com. | Alle rechten voorbehouden. Aangedreven door ExtendOffice. | Sitemap
Microsoft en het Office-logo zijn handelsmerken of gedeponeerde handelsmerken van Microsoft Corporation in de Verenigde Staten en / of andere landen.
Beschermd door Sectigo SSL