anoniem Geplaatst: 4 december 2003 Delen Geplaatst: 4 december 2003 Ik lees een grote hoeveelheid gegevens in Excel in vanuit een .txt-bestand. Dat levert helaas een groot aantal lege cellen op omdat bij rijen over hetzelfde onderwerp alleen de eerste rij de naam van het onderwerp bevat. Ik ben dus op zoek naar een manier (in een macro?) om een lege cel automatisch te vullen met de eerste de beste waarde die, omhoog zoekende, te vinden is in dezelfde kolom. Wie heeft een goed idee? Moonie Quote Link naar reactie
anoniem Geplaatst: 6 december 2003 Auteur Delen Geplaatst: 6 december 2003 Moonie, Onderstaande sub zou het moeten doen. Selecteer de cellen en laat de routine het werk doen. Als je een hele kolom selecteert, kan het een paar seconden duren voor de hele kolom gedaan is. Ik kon niet vinden hoe je de laatste rij en kolom uit een selectie kan vinden. Maar misschien helpt iemand daarbij. Ik heb de sub getest met Excel-97 SR2. Het zal ook wel met hogere versies werken. [code:1:e05a84aa4c]Sub VulWaardenAan() Dim SelectieStartRij As Integer Dim BladLaatsteRij As Integer Dim c As Variant Dim WaardeHogereCel As Variant SelectieStartRij = Selection.Cells(1, 1).Row BladLaatsteRij = Cells.SpecialCells(xlCellTypeLastCell).Row For Each c In Selection If c.Row <= BladLaatsteRij Then If c.Row > SelectieStartRij Then If c.Value = "" Then c.Value = WaardeHogereCel End If WaardeHogereCel = c.Value End If Next c End Sub[/code:1:e05a84aa4c] Met vriendelijke groet, Maarten. Quote Link naar reactie
anoniem Geplaatst: 6 december 2003 Auteur Delen Geplaatst: 6 december 2003 Thanks Maarten, ziet er niet eens zo ingewikkeld uit. Om de laatste rij te ontdekken kan ik de macro misschien laten kijken of er in de kolom ernaast iets staat. Zo niet, dan is de laatste rij net geweest... Moonie Quote Link naar reactie
anoniem Geplaatst: 8 december 2003 Auteur Delen Geplaatst: 8 december 2003 Probeert anders dit eens: [code:1:3c379c7757] Public Sub Test() Dim rng As Range Dim sCol As String sCol = ActiveCell.Address(ColumnAbsolute:=False) sCol = Mid(sCol, 1, InStr(sCol, "$") - 1) Set rng = Range(sCol & "1", _ sCol & CStr(Cells(Rows.Count, sCol).End(xlUp).Row)) rng.Replace What:="", Replacement:="999" End Sub [/code:1:3c379c7757] U selecteert een cel in een kolom waarin willekeurige [i:3c379c7757]lege[/i:3c379c7757] cellen staan. Wanneer u deze macro uitvoert zult u zien dat alle [i:3c379c7757]lege[/i:3c379c7757] cellen zijn ingevuld met de opgegeven waarde, in dit geval '999'. Mijn macro is gemaakt om maar voor één bepaalde kolom per keer te werken (deze waarin een cel is geselecteerd), maar u kunt de functie [i:3c379c7757]Replace[/i:3c379c7757] uiteraard gebruiken op een veel grotere range. Aan [i:3c379c7757]sCol[/i:3c379c7757] wordt de letter van de kolom (niet het cijfer) toegekend. Als we die kennen wordt de range gespecificeerd, zijnde van de eerste tot de allerlaatste gebruikte rij van deze kolom. Als het [i:3c379c7757]de eerste de beste[/i:3c379c7757] waarde mag zijn, kan dit voor u een [i:3c379c7757]snelwerkende[/i:3c379c7757] oplossing betekenen...[/i] Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen