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

Macrotje is toch best lastig

Status
Niet open voor verdere reacties.

luwie

Nieuwe gebruiker
Lid geworden
16 sep 2013
Berichten
4
Ziet nu al 2 dagen te googlen om een oplossing voor mijn excel sheet te vinden....maar ik kom het niet echt tegen.
Ik heb dit bestand wat ik wil importeren in een SQL server,nu wil MySQL wel een indexnummer hebben.
Het bestand wat ik nu heb heeft dit niet.
Als ik het op de "hand" doe lukt het wel .
Ik maak dan gebruik van vervang alles voor 1,daarna 2 enzo verder,maar met 26000 cellen is dit wat veel.

Als ik dus B1 selecteer en daarna vervangen met 1 doe en dan voor alle velden,dan werkt het.
ik heb wel zitten puzzelen met een macro maar er moet dus een loop inzitten en hij moet iedere keer ophogen met 1.

In het tabblad üitkomst zie je de eerste 8 velden op de hand

Ik hoop dat iemand mij een duwtje in de goede richting kan geven

Groetjes Theo
 

Bijlagen

In B1 typ je 1 en B2 typ je 2, selecteer B1:B2 ga met de muis op het kruisje rechts onder van het geselecteerd gebied staan dubbel klik en voila.
 
Bedankt Jean-Paul voor de snelle reactie,maar het is niet helemaal wat ik bedoel.
Misschien heb ik het niet helemaal helder uitgelegt.

Als ik in het voorbeeld de cel B1 selecteer en daarna de routine "vervangen" start ( en alles vervangen door 1) zal excel dit in alle velden doen.
Dit is ook wat ik wil,daarna ga ik naar B2 en start dezelde actie maar dan met de waarde 2
Vervolgens B3 ,zelfde actie maar met 3

De uitkomst van deze actie zie op het tabblad uitkomst.
De macro die dit zou kunnen zou heel handig zijn.

Ik hoop dat dit iets duidelijker was?

Groetjes Theo
 
Laatst bewerkt door een moderator:
Code:
Sub Macro1()

    Columns("B:B").Select
    Selection.ClearContents
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "1"
    Range("B2").Select
    ActiveCell.FormulaR1C1 = "2"
    Range("B1:B2").Select
    Selection.AutoFill Destination:=Range("B1:B8")
   
    Range("C1").Select
End Sub
 
Laatst bewerkt door een moderator:
Is het wellicht een idee om het ipv met een macro met een formule en een paar hulpkolommen te doen.
Zijn de waarden in kolom B1:B8 allemaal uniek? In dat geval nummer je in A1:A8 van 1 t/m 8.
Vervolgens voeg je kolommen E en G in (zie ook bijlage).
In E1 plaats je de volgende formule:
=ALS(ISFOUT(INDEX($A$1:$A$8;VERGELIJKEN(D1;$B$1:$B$8;0)));D1;INDEX($A$1:$A$8;VERGELIJKEN(D1;$B$1:$B$8;0)))
Deze trek je door naar beneden
Vervolgens kopieer je deze formule ook naar G1 en trek je deze ook door naar beneden.
Dan heb je het resultaat wat je wilt. Desgewenst gooi je vervolgens kolommen A, D en F weg (dan wel eerst alles kopieren en plakken als waarden!)

Het bovenstaande werkt alleen als de waarden in kolom B uniek zijn. Anders dien je een apart tabblad te maken met de unieke waarden en deze te nummeren en formule hier naar laten verwijzen.
Formule kun je aanpassen aan de lengte van je eigen lijst en eventueel meer hulpkolommen invoegen als je meerdere kolommen hebt.
 

Bijlagen

@JP28

Vermijd 'select' en 'activate' in VBA

ipv
Code:
Sub Macro1()

    Columns("B:B").Select
    Selection.ClearContents
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "1"
    Range("B2").Select
    ActiveCell.FormulaR1C1 = "2"
    Range("B1:B2").Select
    Selection.AutoFill Destination:=Range("B1:B8")
   
    Range("C1").Select
End Sub

gebruik:

Code:
Sub Macro1()
    Columns(2).ClearContents
    Range("B1")= 1
    Range("B2")= 2
    Range("B1:B2").AutoFill Range("B1:B8")
End Sub
 
Met alle respect voor de voorgestelde VBA-oplossingen maar die geven m.i. geen oplossing voor het geschetste probleem. Deze nummeren slechts kolom B van 1 t/m 8 maar laten de waarden in de andere kolommen ongemoeid. Het gaat er juist om dat de tekstwaarden in kolom B een unieke numerieke waarde krijgen en dat deze numerieke waarde wordt overgenomen in de overige kolommen/cellen waar dezelfde tekstwaarden voorkomen als in kolom B.

Ik heb mijn oplossing met de formule nog iets eenvoudiger gemaakt (zie bijlage) door de formule in de kolommen op het eind te zetten (F en G) in plaats van tussen de kolommen.
Je kan nu de formule, afhankelijk van het aantal kolommen in je eigenlijke bestand, in 1 keer naar rechts trekken en vervolgens naar beneden
 

Bijlagen

Laatst bewerkt:
Code:
Sub Macro1()

    Columns("B:B").Select
    Selection.ClearContents
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "1"
    Range("B2").Select
    ActiveCell.FormulaR1C1 = "2"
    Range("B1:B2").Select
    Selection.AutoFill Destination:=Range("B1:B8")
   
    Range("C1").Select
End Sub

Bedankt voor de Macro JeanPaul,ik heb de macro geprobeerd maar wat hij doet is de collum B leegmaken en daarna vullen met een rij van 1 tot 10
Wat ik eigenlijk wil is dat de makro begint met de orginele waarde in Cel B1(AKC 02-05-2010-01) deze waarde wordt met alles vervangen door de "waarde 1"
dus ook in de andere rijen D en E .
Daarna gaat de macro naar cel B2 en doet hetzelfde ,maar dan met de waarde 2 en zo alle cellen in B

Ik zie nu zelf ook dat het best lastig is om een goede beschrijving te geven, sorry:(
 
Ik begrijp niet de angst voor het gebruik van kolom A, maar a la:

Code:
Sub M_snb()
   sn = Columns(2).SpecialCells(2)

   For j = 1 To UBound(sn)
     Cells.Replace sn(j, 1), j, 1
   Next
End Sub
 
Bedankt!

Arie en ook de anderen natuurlijk voor het meedenken Bedankt!
De truk met het laatste excelblad van Arie werkte heel mooi :thumb::thumb::thumb:

Het is geen macro ,maar het resultaat is precies wat ik bedoelde :D

En om deze formule uit te denken was ik nog wel een weekje of twee bezig geweest,dus nogmaals bedankt:thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan