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

Verticaal doorvoeren als origineel horizontaal is

Status
Niet open voor verdere reacties.

Winterkoning

Gebruiker
Lid geworden
16 jun 2007
Berichten
214
Ik heb gegevens die ik verticaal wil doorvoeren maar de gegevens willen enkel horizontaal doorgevoerd worden. Die gegevens staan op een ander werkblad horizontaal opgesteld. Ik ben aan het klooien geweest met het dollarteken en de functie RIJ en KOLOM. De oplossing moet simpel zijn maar ik kom er niet achter...

Als ik niet duidelijk genoeg ben, laat het aub weten.

Alvast bedankt!

(p.s. weet iemand trouwens waarom letters niet doorvoerbaar zijn? Als ik A typ en doorvoer krijg ik geen alfabet)
 
I
(p.s. weet iemand trouwens waarom letters niet doorvoerbaar zijn? Als ik A typ en doorvoer krijg ik geen alfabet)
Omdat er geen lijst van bestaat in Excel. Als je naar Extra > Opties gaat en op een van de tabs (welke weet ik niet meer uit m'n hoofd, werk nu aan blauwe maandag met 2007 en nu al vergeten) kun je een aangepaste lijst maken en dus ook toepassen. Dit geldt voor Office 2003.
Voor 2007: Officeknop > onderaan het venster Opties voor Excel eerste venster knop aangepaste lijsten bewerken.
 
Beste Wigi,

Bedankt, maar ik kom er niet uit. Ik kan wel gewoon een formule kopieeren en plakken maar dat werkt niet.

Maakt het voor de rest nog wat uit dat het op een ander werkblad staat?


Hier een voorbeeld van mijn probleem:
 

Bijlagen

En waarom niet gewoon Kopiëren, dan Bewerken > Plakken Speciaal > Transponeren?
 
En waarom niet gewoon Kopiëren, dan Bewerken > Plakken Speciaal > Transponeren?

Die wist ik al. Maar daar begin ik liever niet aan omdat ik dan een uur bezig ben met knippen en plakken en dat foutgevoeliger is.
 
Een uur? :shocked:

En een formule met RIJ() en KOLOM(), die afhankelijk is van waar je ze plakt aangezien RIJ() en KOLOM() gebruikt worden, zou dan gemakkelijker zijn? Hmmm...

De basis voor de formule is dat je in het doelbereik KOLOM() gebruikt om de RIJen uit het eerste bereik aan te duiden.

Probeer maar met de formule die ik in de andere topic schreef. Als je dat begrijpt zal dit ook gaan.
 
Een uur? :shocked:

Nou, voornamelijk omdat het ook gekoppeld is aan formules...
Ik heb het mezelf veel te ingewikkeld gemaakt.

Ik heb geen RAR uitpakprogramma en met Winzip wil het niet. Ik kan op de schoolcomputer niets installeren dus dat gaat op het moment niet.

Evengoed bedankt.
 
Omdat ik het met spoed nodig heb heb ik het de concierge gevraagd en die heeft het geregeld.

Helaas is dat niet wat ik zoek (of het is te ingewikkeld voor me om te zien dat het hetzelfde is als wat ik zoek).

Het enige wat ik wil is dat bij het doorvoeren van een waarde de letter in plaats van het getal wordt doorgevoerd.
 
Laatst bewerkt:
Allé, hang je huidige formule erbij met RIJ en KOLOM en ik zal zien wat er veranderd moet worden.
 
Winterkoning, Ik vraag me af of je de functionaliteit Transponeren wel echt kent...??? Is het aantal gegevens in werkelijkheid groter dan in je voorbeeldsheet? Je kan namelijk met transponeren in 1 keer het hele bereik (A1:E9) kopieren, naar een leeg gedeelte (of nieuwe sheet) gaan en daar plakken speciaal > transponeren aanklikken. AL je kolommen worden dan netjes in rijen omgezet... (in je voorbeeld: 3 seconden werk!) Het hoeft dus niet kolom voor kolom!

Groet, Leo
 
Winterkoning, Ik vraag me af of je de functionaliteit Transponeren wel echt kent...??? Is het aantal gegevens in werkelijkheid groter dan in je voorbeeldsheet? Je kan namelijk met transponeren in 1 keer het hele bereik (A1:E9) kopieren, naar een leeg gedeelte (of nieuwe sheet) gaan en daar plakken speciaal > transponeren aanklikken. AL je kolommen worden dan netjes in rijen omgezet... (in je voorbeeld: 3 seconden werk!) Het hoeft dus niet kolom voor kolom!

Groet, Leo

Ik ken hem. Mijn sheet is helaas minimaal 20x zo groot en ook is het zo dat ik bepaalde gegevens wel nodig heb en andere niet. Daarnaast staan er verschillende dingen op verschillende werkbladen die ik dan apart zou moeten transponeren. Geloof me, het gaat niet werken.

@Wigi:

=VERSCHUIVING($C$3;KOLOM()-2;1;1;1)

Dat is degene die ik heb. Helaas lijkt hij er waarschijnlijk in de verste verte niet eens op. Ik heb hem ook maar ergens vandaan gehaald en ben daarmee aan de slag gegaan.
 
Winterkoning, Ik heb voor de gein een soort transpose-functie gemaakt in VBA. Redelijk primitief, maar wel grappig. De voorwaarde is dat de 1e te transponeren cel 'cel A1' moet zijn en dat je deze functie op een nieuw schoon werkblad neerzet óók vanaf cel A1. In jouw voorbeeldsheet heb ik deze functie op blad 2 gebruikt en ziet er dan zo uit
Code:
=TransCopy(Blad1!$A$1;A1)
Let op dat de 1e verwijzing volledig absoluut moet zijn. De 2e verwijzing moet je in cel A1 intikken want dat kan je niet met de muis aangeven. Vervolgens is die volledig alle kanten uit te slepen met de vulgreep.

Deze functie moet je dan nog wel ff in een standaard module van je workbook plakken
Code:
Function TransCopy(rStartcel As Range, rDezeCel As Range)
Application.Volatile
    
    TransCopy = rStartcel.Cells(rStartcel.Row + (rDezeCel.Column - 1), rStartcel.Column + (rDezeCel.Row - 1)).Value

End Function
Misschien kan je er iets mee, misschien ook helemaal niet (ik vond 't wel leuk om er ff mee te stoeien:D)

Groet, Leo
 
@Wigi:

=VERSCHUIVING($C$3;KOLOM()-2;1;1;1)

Dat is degene die ik heb. Helaas lijkt hij er waarschijnlijk in de verste verte niet eens op. Ik heb hem ook maar ergens vandaan gehaald en ben daarmee aan de slag gegaan.

Bijna... ;)

=VERSCHUIVING($A$1;KOLOM()-1;RIJ()-12)

Formule komt in cel A12.

Wigi
 
Winterkoning, Ik kon het toch niet laten om nog ff door te gaan in de 'ingeslagen weg' van de functie. Hij is nu volledig inzetbaar op elke plek in dezelfde sheet of op een nieuwe. Het moet nog wel in hetzelfde workbook zijn!
Code:
Function TransCopy(rStartcel As Range, rAnkercel As Range, rDezeCel As Range) As Variant
Dim lKolom As Long, lRegel As Long

    Application.Volatile
       
    lKolom = (rDezeCel.Column - rAnkercel.Column)
    lRegel = (rDezeCel.Row - rAnkercel.Row)
    
    TransCopy = Sheets(rStartcel.Worksheet.Name).Cells(rStartcel.Row + lKolom, rStartcel.Column + lRegel).Value

End Function
Er is een attribuut bijgekomen: de 'Ankercel'. Deze gebruik ik om de celverwijzing te maken. De syntax wordt nu: =TransCopy(de startcel waar je tabel begint; de ankercel waar je met de transpose begint -> dit is dus de cel waar je de formule intikt; de huidige cel waar je in staat). Voorbeeld: Je hebt een tabel(letje) die je wilt transponeren. De 1e cel van die tabel is A10 op Sheet1. Het transponeren moet beginnen op Sheet2 in cel G5. De formule wordt dan:
Code:
=TransCopy(Sheet1!$A$10;$G$5;G5)
De 1e 2 celverwijzingen MOETEN absoluut gemaakt worden. Het 'G5' in de formule moet je gewoon als tekst intikken.... dit kan niet met de muis aangewezen worden!!!! Uiteraard kan je wel dmv functietoets F4 de 2e verwijzing absoluut maken.
Het is géén matrix-functie, dus je kan gewoon afsluiten met een enter. Vervolgens kan je met de vulgreep de formule naar onderen en naar rechts slepen...

Groet, Leo
 
Laatst bewerkt:
Leo

Ankercel:

Met Application.Caller haal je de cel op die jouw functie bevat. Ideetje? ;)

Wigi
 
Wigi,
Wigi zei:
Met Application.Caller haal je de cel op die jouw functie bevat. Ideetje? ;)
...aanvullingen zijn ALTIJD welkom. :thumb:
Of je de ankercel er mee kan vervangen dat vraag ik me af. Het lijkt me wel iets voor de rDezeCel (dat scheelt je weer een ingave in de functie:p). Ik krijg het nu alleen ff niet voor elkaar...:(

Groet, Leo
 
...en voor de geïnteresseerden...:D
Code:
Function TransCopy(rStartcel As Range, rAnkercel As Range) As Variant
Dim lKolom, lRegel As Long
'Dim rDezeCel As Range

    Application.Volatile

    Set rDezeCel = Range(Application.Caller.Address)
    
    lKolom = (rDezeCel.Column - rAnkercel.Column)
    lRegel = (rDezeCel.Row - rAnkercel.Row)
    
    TransCopy = Sheets(rStartcel.Worksheet.Name).Cells(rStartcel.Row + lKolom, rStartcel.Column + lRegel).Value

End Function
Met dank aan Wigi voor de tip! :thumb:

Met deze functie is de syntax iets verkort. Naar bovenstaand voorbeeld wordt de formule nu...
Code:
=TransCopy(Sheet1!$A$10;$G$5)

Groet, Leo
 
Laatst bewerkt:
Ik zou

Code:
Set rDezeCel = Range(Application.Caller.Address)

vervangen door

Code:
Set rDezeCel = Application.Caller

en

Code:
TransCopy = Sheets(rStartcel.Worksheet.Name).Cells(rStartcel.Row + lKolom, rStartcel.Column + lRegel).Value

door

Code:
TransCopy = rStartcel.Parent.Cells(rStartcel.Row + lKolom, rStartcel.Column + lRegel).Value

Wigi
 
Wigi, Het 'op zichzelf gebruik van application.caller' gaf in 1e instantie een error. Na wat helpfiles te hebben bekeken, zag ik dat er nog een object bij moest. Vandaar mijn oplossing.
De 'Parent' eigenschap kende ik niet. Dus mijn dank weer voor de nieuwe info...

Opzich géén foute functie toch?

@Winterkoning,
Winterkoning zei:
Omdat ik het met spoed nodig heb...
Is de haast van gisteren helemaal verdwenen? Of heb je je oplossing al klaar?

Groet, Leo
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan