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

getalsnotatie-gedrag bij downdrillen pivottable-gegevens

Status
Niet open voor verdere reacties.

jbronkhorst

Nieuwe gebruiker
Lid geworden
31 mrt 2009
Berichten
2
Ik heb een excelsheet waarin een pivottabel staat. Deze tabel bestaat nu uit ruim 305.000 regels en groeit door tot over een miljoen aan het einde van het jaar. In deze tabel is de kolom met het bedrag gedefinieerd als decimaal getal:

1.png

Als ik echter een draaitabel maakt vanuit die pivottabel, en ik dubbelklik op een bedrag uit die draaitabel om de detailregels op te halen, dan komen getallen van die kolom (bedrag) er als volgt uit te zien (lijkt op tekstopmaak):

2.png

Mijn eerste vraag is of dit probleem is op te lossen. Ik vermoed bepaalde instellingen (nationaal/internationaal) en als het windows instellingen zijn dan kan ik daar niet bij. Ik heb andere veldinstellingen geprobeerd (zoals valuta en geheel getal) maar geen effect.

Mijn noodoplossing is een macro die getallen omzet. Deze macro wordt uitgevoerd als ik detailregels opvraag.

In een module:

Sub blahh(sht As Worksheet)
MsgBox "formatting nieuw tabblad: " & sht.Name
End Sub


In thisWorkBook:

Private Sub Workbook_NewSheet(ByVal Sh As Object)
ans = MsgBox("Getallen omzetten naar numeriek?", vbYesNo)
If ans = vbNo Then Exit Sub
LastRow = ActiveSheet.Range("a1048000:a1048000").End(xlUp).Row
If ans = vbYes Then sq = Range("u4:u" & LastRow)
ReDim Temparray(1 To UBound(sq))
For i = 1 To UBound(sq)
Temparray(i) = sq(i, 1) * 1
Next
Range("u4:u" & LastRow) = Application.Transpose(Temparray)
End Sub


Resultaat in het sheet met meer dan 100.000 regels is dat na een bepaald aantal regels deze macro ermee stopt. Dan zet hij bedrag niet meer om, maar maakt een #N/B. Meestal rondom de 50.000 regels. Deze keer rond de 35.000:

3.png

Het vermoeden is dat de beperking zit in het gebruik van de ReDim functie. Echter ik heb geen oplossing kunnen vinden hoe dit te omzeilen of een vervanger voor deze functie die het wel goed doet met heel veel regels.
Mijn tweede vraag is dus of deze macro is te maken zodat hij altijd alle regels omzet. Dat kunnen dus bijna een miljoen regels zijn uiteindelijk.

Ik hoop dat iemand dit antwoord kan geven.
Alvast dank.
Jaap.
 
Plaatjes zeggen niet zoveel. Het is handiger om een voorbeeldbestand te posten (met fictieve data).

Wat mij opvalt (maar ik kan niet beredeneren of daar de fout vandaan komt) is dat je in kolom A de laatste regel bepaald, en dat je vervolgens deze laatste regel in kolom U gebruikt. Het is altijd verstandig om de laatste regel te bepalen in de kolom die je gebruikt.

Ook lijkt mij de conditie "If ans = vbYes Then" overbodig. Als het antwoord anders dan vbYes is dan kom je niet bij deze regel.
 
Btw. Het probleem kan m.i. niet zitten in het aantal regels in het array. Ik heb net een array gemaakt met 100 miljoen regels en dat doet ie zonder problemen.
 
Nog geen oplossing voor dit probleempje gevonden. Een voorbeeldbestand is op dit moment te ingewikkeld om "even" te maken, dus ik hoop op nog een goede ingeving.

Is er wellicht iets te veranderen aan de macro-code?:

Private Sub Workbook_NewSheet(ByVal Sh As Object)
ans = MsgBox("Getallen omzetten naar numeriek?", vbYesNo)
If ans = vbNo Then Exit Sub
LastRow = ActiveSheet.Range("a1048000:a1048000").End(xlUp).Row
If ans = vbYes Then sq = Range("u4:u" & LastRow)
ReDim Temparray(1 To UBound(sq))
For i = 1 To UBound(sq)
Temparray(i) = sq(i, 1) * 1
Next
Range("u4:u" & LastRow) = Application.Transpose(Temparray)
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan