cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Pasta40
New Member

Thousands separator is changed from dot to comma

Hi there,

 

I am scraping revenue data from a website that comes in different formats. The problem is that if I have a number like 200.000 (dot) PAD changes it to 200,000 (comma). If that number is than written to my list I get 200.

For numbers over 1 million I don't have that problem, so I can't just multiply by 1000.

 

Even if I only set a variable as 200.000, PAD directly shows it as 200,000 in the overview (see attached picture: detail view shows 200.000, overview shows 200,000). 

image.png

I have already checked my system language but it is set to German and uses a dot as the thousands separator.

 

Does anyone know how to solve this problem?

 

Thanks in advance for your help!

16 REPLIES 16
VJR
Super User
Super User

Any other situation where I can re-create this scenario?

 

For me it's showing up the same.

VJR_0-1668421280661.png

 

Pasta40
New Member

That's very interesting, thanks for checking this!

 

No, this is exactly the scenario I am talking about - not knowing the source problem I don't know how to recreate it any other way. I have the hypothesis that it's the language/region settings. I will set my system language to English and try again. Will reply with the result!

Thanks again

Okay, so I set my language to english (US) and now I also see the 200.000 instead of the 200,000.

However, when I write this value into an excel file, I still get 200.

 

Here is the code for a basic test of that:

 

Excel.LaunchExcel.LaunchUnderExistingProcess Visible: True Instance=> ExcelInstance
SET NewVar TO 200.000
SET NewVar2 TO $'''200.000.000'''
Excel.WriteToExcel.WriteCell Instance: ExcelInstance Value: NewVar Column: $'''A''' Row: 1
Excel.WriteToExcel.WriteCell Instance: ExcelInstance Value: NewVar2 Column: $'''A''' Row: 2

 

 

You can see that it correctly inserts the 2.000.000 but that we get 200 for the 200.000

 

Any ideas?

Hi,

seems that you have one variable type ‚text‘ and the other ‚number‘.

Please try to set  to "200.00" for using as text and %200.00% as number.  

VJR
Super User
Super User

SET NewVar TO 200.000
SET NewVar2 TO $'''200.000.000'''

 

One has quotes around it and the other one doesn't so they are going to be treated as text and number respectively.

 

Even if I manually paste 200.000 into Excel it shows up as 200. This has been an Excel formatting "issue" since many years :). This gets corrected when we change the decimal number format of the cell to 3 digits after the data is written to the cell.

 

Thank you for your help.

 

@VJR : If I change the decimal format to 3 digits I only get a two hundred with three zeros after the comma. The real value however is two hundred thousand. The quotes are added automatically by PAD, I have just entered the raw numbers. This shows me that PAD does somehow automatically puts these numbers in different brackets, which is probably the source of the problem.

 

@Gidi : I can convert the text to number, it becomes 200000 and works with excel! The problem is that it only works for single variables in the same format. As soon as the data is in a list with other data it doesnt work because of the different formats (e.g. of 2.000.000 and 200.000.)

Pasta40_0-1668503576351.png

 

 

So the core problem remains: The European thousands separator "." is recognized as a decimal separator for numbers under a million. So if I import the number 200.000 (two hundred thousand), PA makes it 200,000 (two hundred) BEFORE it imports it into Excel. However, it recognizes 2.000.000 as 2.000.000 and 2 as 2. Therefore the scraping data is unusable - it is impossible to know if 200 means 200 or 200.000.

 

I wish there was some setting to change the thousands separator recognition in PAD..

Did you also check the decimal/thousand separator settings of Excel?

It is in the Advanced section of the Options menu.

Pasta40
New Member

Thanks for the idea!
Yes, I've even tried to manually set them to "," for decimal values and "." for thousands. Unfortunately it didn't help. I think the problem is that PAD for some reason changes 200.000 to 200,000 so the error occurs before Excel.

Pasta40_0-1668518737246.png

 

How did you try to convert list? You would need to do it entry by entry as far as I know. 

VJR
Super User
Super User

Hi @Pasta40 

 

Since there are lots of multiple posts with different scenarios can you summarise the issues so that it gives a single view and you can get help from anyone facing with a similar situation.

 

Something like this....This is just an example. Add your own instances.

 

Scenario What is happening? What should happen? Any comments?
When extracted from web into a PAD datatable variable Shows 200,000 Should show 200.000 Works fine when xxx
When PAD datatable variable is written onto Excel Shows 200 Should show 200,000  
       
When extracted from web into a PAD datatable variable <more than million example here>    
When PAD datatable variable is written onto Excel      

 

Pasta40
New Member

Hi VJR,

I used your idea but changed it to my understanding of the situation, hope that helps!

 

Pasta40_0-1668593447169.png

 

Here is the code to recreate the problem:

Excel.LaunchExcel.LaunchUnderExistingProcess Visible: True Instance=> ExcelInstance
Variables.CreateNewList List=> List
SET NewVar TO 200.000
SET NewVar2 TO $'''200.000.000'''
Excel.WriteToExcel.WriteCell Instance: ExcelInstance Value: NewVar Column: $'''A''' Row: 1
Excel.WriteToExcel.WriteCell Instance: ExcelInstance Value: NewVar2 Column: $'''A''' Row: 2

 

What worked: 

If I convert the single variable "200,000" from text to number it gave the correct number to excel (200000).

Pasta40_1-1668593778798.png

However, in the real scenario I dont have a clean single variable but a table of values including text values such as "not available" and numerical values such as "200" or "2.000.000".

 

I was hoping to somehow prevent PAD from changing 200.000 to 200,000 without needing a larger workaround.

 

Hope the situation is clearer now!

Ok, I could not once again create the issue with the variable (the second in the table screenshot).

 

However, when I ran your code it pasted 200. (No. 1)

And then when I manually went into Format cells and formatted it to 3 decimal places it changed to 200.000 (No. 2)

Does this work for you in all scenarios? If so, once all values are written to Excel then via a vbscript you can change the formatting of an entire column to 3 decimal places at once.

 

I meant decimal here, but also see the 1000 separator box below.

Edit: For me it is showing comma as the 1000 separator but it is driven from the Excel options -> Advanced. So make changes there and come back here to see any changes.

 

VJR_0-1668596535934.png

 

Pasta40
New Member

If I understand correctly you propose to format excel to 3 decimal places. In your example it looks like the 200.000 still has a value of "two hundred", because the decimal separator is ".". The real value however was "two hundred thousand" and that's what I need inside the excel.

I don't care if it is a dot or a comma but I need the values to be consistent so i know 200 = 200 and 200000 = 200000.

 

Thanks for your efforts in helping me with this!

Edit: I changed the thousands separator to "," and the decimal separator to "." and still have the same problem. I think the issue is that PAD pastes "two hundred" not "two hundred thousand" - it seems that the issue is not within excel.

 

Maybe to clarify the prolem: This is how the list looks that I end up with in excel:

Pasta40_0-1668598758048.png

 

 

What I was referring to is - even though PAD is giving problems but after pasting it into excel and after changing the Formatting options if it is giving the right values we can apply the same easily with the help of a vbscript.

 

So, ones you have written to Excel try playing around with the decimal places and the separator options and if it works I can share a vbscript of the corresponding fix.

Pasta40
New Member

Okay I understand.

I see as a problem that I don't know if a value was originally 200 or 200000. Therefore formatting all numbers into a visually correct format would not improve the accuracy of the data. (Some data would be displayed as 200000 even though it originally only was 200).

Well, if I understand your problem correctly than you first need to find out, if your datatable contains text or numbers to react on it.

Also it seems you have a mix of decimal separator to handle.

 

What about the following Workaround:

 

Excel.LaunchExcel.LaunchUnderExistingProcess Visible: True Instance=> ExcelInstance
Variables.CreateNewList List=> List
SET NewVar TO 200.000
Variables.AddItemToList Item: NewVar List: List
SET NewVar2 TO $'''200.000.000'''
Variables.AddItemToList Item: NewVar2 List: List
Variables.CreateNewList List=> List2
LOOP FOREACH CurrentItem IN List
    SET isnumber TO True
    Text.ToNumber Text: CurrentItem Number=> TextAsNumber
    ON ERROR
        SET isnumber TO False
    END
    IF isnumber = True THEN
        Variables.AddItemToList Item: TextAsNumber List: List2
    ELSE
        Variables.AddItemToList Item: CurrentItem List: List2
    END
END
Excel.WriteToExcel.WriteCell Instance: ExcelInstance Value: NewVar Column: $'''A''' Row: 1
Excel.WriteToExcel.WriteCell Instance: ExcelInstance Value: NewVar2 Column: $'''A''' Row: 2
Excel.WriteToExcel.WriteCell Instance: ExcelInstance Value: List2 Column: $'''B''' Row: 1

Helpful resources

Announcements
Power Automate News & Announcements

Power Automate News & Announcements

Keep up to date with current events and community announcements in the Power Automate community.

Power Automate Community Blog

Power Automate Community Blog

Check out the latest Community Blog from the community!

Top Solution Authors
Top Kudoed Authors
Users online (3,575)