I have thousands of X and Y coordinates in two different columns and would like to combine the coordinates as 6-digit values into a single column. For example, combine (1,1) into 001001, and combine (14, 14) into 014014. A simplified data table is attached.
How do I do that using formula or script?
Assuming X and Y never exceed three digits, this should work in a column formula:
Repeat( "0", 3 - Length( Char( :X ) ) ) || Char( :X ) ||
Repeat( "0", 3 - Length( Char( :Y ) ) ) || Char( :Y )
Edit:
Or maybe this is more efficient:
Right( Char( 1e6 + :X * 1e3 + :Y ), 6 )
Assuming X and Y never exceed three digits, this should work in a column formula:
Repeat( "0", 3 - Length( Char( :X ) ) ) || Char( :X ) ||
Repeat( "0", 3 - Length( Char( :Y ) ) ) || Char( :Y )
Edit:
Or maybe this is more efficient:
Right( Char( 1e6 + :X * 1e3 + :Y ), 6 )
Thanks. Exactly what I want.
You can use the Repeat() function to pad out the character representation for these coordinates.
It would look like this:
(Repeat( "0", 3 - Length( Char( :X ) ) ) || Char( :X )) || (
Repeat( "0", 3 - Length( Char( :Y ) ) ) || Char( :Y ))
I've attached your data table with a new column showing this.
-Jeff
Thank you for the fast response.
the left and right functions have a third argument to specify a pad value. JSL Character String Functions
x=42;
right( char(x), 3, "0");
"042"
be careful, some of the other suggestions may be more robust if the numbers are out-of-bounds, or maybe not, depending what you expect:
x=9876;
right( char(x), 3, "0");
"876"