Convert to text truncating leading zeros - excel

I am using =TEXT() function in Excel to convert alphanumeric to a string. All of them convert except part numbers that have a leading zero, e.g. 012345.
Currently my function is =TEXT(Input!B10, "0"). I have tried different variations of this without success. I have searched the Interwebs for an answer, also without success. Everything converts to a string EXCEPT for numbers with ONE leading zero. I have even setup a new workbook to test, and I get the same result. This is part of a larger macro to get custom prices for my ERP system.

Simplistically you can just do this. This would assume you have 0123456 in B10 formatted as Text. It will format to keep the same amount of leading zeros as in the original.
=TEXT(B10,REPT(0,LEN(B10)))

The TYPE Worksheet Function
=IF(TYPE(INPUT!B10)=2,B10,TEXT(INPUT!B10,"#"))
If you don't want to show other text values use this:
=IF(TYPE(B10)=2,IF(LEFT(B10,1)="0",B10,""),TEXT(B10,"#"))
If you want to convert empty cells to 0 then use:
=IF(TYPE(INPUT!B10)=2,B10,TEXT(INPUT!B10,0))
VBA Help
Type
Returns the type of value. Use TYPE when the behavior of another function depends on the type of value in a particular cell.
Syntax
TYPE(value)
'Value' can be any Microsoft Excel value, such as a number, text, logical value, and so on.
If value is TYPE returns
Number 1
Text 2
Logical value 4
Error value 16
Array 64

Related

Excel Formula separate the left numeric values from the data

I have some data in Col"K" where from i am just trying to get the left characters as i tried in Col"H" using formula.
But what i used is Left function like =Function(cell,10) that is not the correct way characters can be more than 10 or less than 10.
1st formula should be dynamic to get the left numeric values.
2nd Formula should copy and paste the same numeric values until next value comes as available in Col"I"
I tried to make it but what i can do is to create left function and do not know how to develop it dynamic.
Any help will be appreciated.
Sheet Link
https://docs.google.com/spreadsheets/d/1nJZeWDZ0EWgmWB0z17xU93fjIOFsu46EL37IJqJzZ_0/edit?usp=sharing
This formula should do the job.
[J2] =IFERROR(TRIM(LEFT(L2,FIND("-",L2)-1)),J1)
Note that it will fail if placed in row 1 and there is no dash in L1.
Use find function to get numeric characters length.
=iferror(trim(left(L3,FIND("-",L3)-1)),M2)
Here we are finding the separator "-" in your text and it gives us index number of separator.
Then picking text from start to before index number i.e., Numeric value and removing blank spaces, if any, using trim function. If we don't have number/separator in the text then showing previous cell value using iferror function. So, Make sure first row always has numeric value.
Same has implemented in the sheet you have shared
As per the latest data I have updated my answer as below , now it is checking output is numeric or not:
=IF(COUNT(FIND({0,1,2,3,4,5,6,7,8,9},J9))=0,K8,TRIM(LEFT(J9,FIND("-",J9)-1)))

Changing the format of the value inserted in excel or making it more readable

Is there any formula in excel by which we can change the format in a way to make it easier to read
Example :
Existing: 17752528.25
Expected: 17,752,528.25
Along with the above thing, if any value inserted in the any cell of excel then that value can be entered with leading zeros without the need to change the cell format
Example :
should allow to insert the value in a cell as : 00098756 i.e with the leading zeros and even after switching the cell or saving the sheet, the value remain as it is.
Or do i need to write a custom program using VBA for both the scenario.
Thank you !
You have to carefully think about your data and data types on the one hand and it's representation on the other.
Your first example looks like a real number for me, 17 millon 752 thousand... If it is, you could use it in any calculation. Displaying it with thousand separator is a matter of formatting. The value of this number doesn't change, no matter how you format it, the format only defines how it is represented to the user. No matter if you display it as 17752528,25, 17,752,528.25, 1,78E+07, the value stays the same. And on my computer, it would be displayed as 17.752.528,25 as my computer is configured to have a comma as decimal separator - but still, the value would be the same.
If I am wrong and it is a string, you need some coding to get the commas in it, but that would change the string, so it's no longer a matter of formatting. The value without and the value with the commas would be total different.
Now, if it comes to input where leading zeroes matter, you have clearly not a number but a string. If the user enters 00098756 and it would be a number, the value would be 98756. You can change the representation to display leading zeroes, but you will not know how many leading zeroes the user entered.
To keep the zeroes exactly as the user entered, you need either to format the cell as text or the user has to enter a leading ', else Excel will interpret the input as number and immediately throw away the zeroes. Now, you have a string that contain only digits, but keep in mind that 00098756 is not equal to 98756 or 98,756. You can, however, use the value-function in Excel (or val in VBA) to get it's numerical value.

Testing if first character of a string is non-numeric in LibreOffice Basic

I have column of strings mostly composed of numbers. Most of these strings are indeed 10 digit numbers formatted as string like :1234567890 except a few of them. Those exceptions start with a literal character with a letter to be specific like :A1234567890. What I want to do is while looping over that column I want to check on first characters and if it is a literal I want to branch my code. I'm not familiar with LibreOffice Basic yet VBA so any help is appreciated.
Listing 6.14. Display all data in a column in Andrew Pitonyak's Macro Document shows how to loop through all cells in a column.
To find out if the cell's string is numeric, use the IsNumeric function:
If IsNumeric(aCell.String) Then

VBA Columnar Loops Using Arrays for String Variables

I have a column full of text/string values. Some of the values appear to be null, but in reality have some formatting (additional spaces) left over from the exporting program where I get the excel data. I am trying to create an array using all capitalized letter of the English alphabet to cypher through each cell in the column, looking for the instance of any of the alphabet's letters within the first letter of each cell in the specific column, and if not found, returning a completely blank value in the neighboring column. If a letter value is found, then it would return the entire value of the cell. This way I can have true blanks and will be able to sort things a bit better.
I have been trying to find a working argument to build off of but aside from the
LEFT(Cell,1)="A-Z"
I have found little that seems to be a viable workaround. Any help is appreciated! Thanks!
You will want to use the ascii value to check for A-Z. Assuming the data is in the A column you can use the formula below. ASCII value range 65=A 90=Z. The trick is the Code formula which returns the ascii numeric value. Then an if statement to check if it is between the range, If it is return the cell contents and if not return nothing. You can also use Clean() to remove any unprintable characters (that is not used in this example)
=IF(CODE(UPPER(LEFT(A1,1))) > 64, IF(CODE(UPPER(LEFT(A1,1))) < 91,A1,""))

How to add cells with mix of 6 to 8 decimal places together

Because of floating point values, I cannot add a string of cells that contain values such as:
0.08178502
0.09262585
0.13261762
0.13016377
0.12302067
0.1136332
0.12176183
0.11430552
0.09971409
0.125285
Even if I try adding the first two through a sum formula or auto sum through selecting them, excel spits out an error. I have googled this like crazy and tried to change number formats. Is there a function that can allow me to add this information ?
Screenshot:
The spreadsheet is available on my Dropbox.
Those numbers are all preceded by a NBSP (Char Code 160). So, in order to sum them, you have to remove that. Many solutions. Here's one:
=SUMPRODUCT(--SUBSTITUTE(A1:A18,CHAR(160),""))
If a formula like:
=A1+A2+A3+A4+A5+A6+A7+A8+A9+A10
produces:
#VALUE!
then your "numbers" cells contain non-visible characters.
They must be removed before the formula will work.
If the cells contain text strings and not actual values you will need to convert the text to numeric values before performing any calculations. The function "=value(cell)" will bring the numeric value.
e.g.: A1 contains "000.12345678" (or some other non-numeric presentation of numerals)
In cell B1 type: =value(a1)
Cell B1 now operates as the real number 0.12345678
Oddly enough, the fact that it said 0.xxxxx in all numbers vs. .xxxxx is what the issue was. I'm just sharing that for folks who google/search and have same issue.
All I had to do was select that whole row and do a search in replace for "0." and make it just "." and now my numbers were usable in equations. For some reason the adjustment of formating as many searches suggested wasn't working

Resources