I'm trying to restrict a cell to specific characters using excel - excel

i'm trying to force the date format of mm/dd/yyyy in a cell in excel using excel for mac v 16.60. the column format must be text.
i'm not great with visual basic, so i'm hoping this is accomplishable via formula or data validation.
i've tried the following:
https://answers.microsoft.com/en-us/msoffice/forum/all/forcing-a-particular-format-for-date-data-entry-in/fe2d68c5-12e2-45c5-afb7-a5d1be732bfe
https://www.extendoffice.com/documents/excel/3653-excel-only-allow-date-in-cell.html
(#2 under allow only date format in specific cells with data validation function)
is there a way to require 2 digits, a slash, 2 more digits, a slash, then 4 digits in a text-formatted cell?

There is a Excel formula for text. Place a regular date in cell A2 then in another cell type =TEXT(A2,"mm/dd/yyyy").
If the answer works for you, the expectation is that you checkmark it and upvote it. If the answer does not work for you you add a comment at the bottom and the problem you experience.

Related

Extracting Date From Cells using excel formulas

Im exploring how feasible it is to extract data from cells that consist of text. ultimately. I will apply conditional formatting rules based on the date relative to today, but right now I just need to be able to extract them.
So far I have achieved the following:
To achieve this I've used the formula found online =IFERROR(DATEVALUE(LEFT(RIGHT(B2,(LEN(B2)-(FIND("-",B2)-3))),11)),""). The issue is that if a cell contains only a date, the Length is subtracted from itself and nothing is returned. I have tried modifying the above equation but keep running into errors.
Hoping someone may be able to help me out modify this formula. Alternatively, if anyone knows how dates can be extracted used just excel formulas that would be great.
The issue is that without the other text it is a true date and a true date is a double and has no - in it.
The simple fix is to wrap change the"" return from the IFERROR to B2:
=IFERROR(DATEVALUE(LEFT(RIGHT(B2,(LEN(B2)-(FIND("-",B2)-3))),11)),B2)
If that is not sufficient you can do an IF to test if date:
=IF(ISNUMBER(B2),B2,IFERROR(DATEVALUE(LEFT(RIGHT(B2,(LEN(B2)-(FIND("-",B2)-3))),11)),""))
This is a solution I came up with with appears to work for almost Any Date format provided the date is at the top of the cell. Note this was done for dates in cell H6 of my workbook.
The formula below can be entered below to extract the date from this cell amongst text.
=TEXT(IFERROR(LEFT(H6,SEARCH(CHAR(10),H6,1)-1),H6),"dd-mmm-yyyy")
This formula checks if the date is within 3 years and returns a true of false value. This can be used to conditionally Format Cells if the date once extracted is out of date.
=IF(ISBLANK(H6),FALSE,IFERROR(IF(DATEVALUE(TEXT(IFERROR(LEFT(H6,SEARCH(CHAR(10), H6, 1)-1),H6),"dd-mmm-yyyy"))<=TODAY()-(365*3),TRUE,FALSE),TRUE))
Works really well for me!

Convert text string into a formula in Excel

I have in a cell two numbers "=5+4" as a text. This is a result of another operation.
I took a part of another formula and concatenated it with "equal" symbol:
= "=" & RIGHT(FORMULATEXT(V8);LEN(FORMULATEXT(V8))-SEARCH("+"; FORMULATEXT(V8)))
I want to get the result of 5+4 in a cell- which means "9" ;)
I DO NOT WANT TO USE VBA code.
my initial problem was to extract all numbers except the first one from an equation and sum in another cell: A1: "=6+5+4". A2: "9". Maybe it can be solved without VBA?
You could try (assuming only addition):
Formula in B1:
=SUM(FILTERXML("<t><s>"&SUBSTITUTE(MID(A1,2,LEN(A1)),"+","</s><s>")&"</s></t>","//s[position()>1]"))
In fact, if you don't want to use the 1st number we could also discard taking '=' into account:
=SUM(FILTERXML("<t><s>"&SUBSTITUTE(A1,"+","</s><s>")&"</s></t>","//s[position()>1]"))
And since SUM() will ignore text in the final answer, we can now even further simplify this (thanks #JosWoolley):
=SUM(FILTERXML("<t><s>"&SUBSTITUTE(A1,"+","</s><s>")&"</s></t>","//s"))
If you are always adding 2 numbers, then you can use this:
=VALUE(VALUE(MID(A1;2;SEARCH("+";A1)-2))+VALUE(MID(A1;SEARCH("+";A1)+1;9999)))
My column A is formatted as text, and all values follow same pattern: =Value1+Value2
So the formula extracts Value1 and Value2 as text with MID functions, based on the position of + symbol. Then Excel convert both values into numeric with VALUE function. Notice there are 3 values, the third one is to make sure the cell stays at standar format (in some versions of Excel, like mine 2007, when involving text formatted cells into formulas, the formulated cell autoformat itself to text format, making the formula to work just once).
As you can see in the image, it works perfectly but this is just for pattern =Value1+Value2. For different patters you'll need different formulas.
If you want to make a formula to work with all patterns, then indeed you need VBA.

How to get what excel cell is showing?

I have a strange question.
Screenshot:
From the screenshot you can see that the formula bar is showing just a single apostrophe. This is on all of the blue cells. These should be dates but all this data is coming from a excel plugin (Board)
From what I know Excel treats this cells differently i.e. everything after the apostrophe should be shown as text but here there is nothing after the apostrophe and the cells are still showing a values.
Is there a way with formula that I can get and compare this value with another cell in different worksheet?
EDIT:
If there is a way to get it as a text, could it be than converted into date format number?
EDIT 2 - SOLUTION
As per Mahesh and Jeeped comments - there was a newline character in the formula bar
If the date is preceded only by a new line and there are no other characters after the date, this will be much simpler:
=VALUE(REPLACE(A1,1,1,""))
This will give you the date value in general format (i.e., 43033), so you'll have to format it as a date.
Note: Using DATEVALUE instead of VALUE will give you the same result.
You have not confirmed the vbLF characters in the cells but try this in an unused cell to retrieve a true date.
=datevalue(trim(mid(substitute(kn1, char(10), rept(char(32), len(kn1))), len(kn1), len(kn1))))
Assuming that you are on a DMY regional format that should get you a number like 43028. Format it as a date.

Formulas won't calculate automatically

I have a big sheet with a lot of formulas that have a dependency hierarchy between them. It starts with a cell with a date value. Then, cell x:y (and others), has formula depending on this date. Then cell w:z (and others) has a formula depending on cell x:y. And so on...
This main cell with a date value is filled using apache poi.
And now my problem: when I open the generated excel file, the date is there, but none of the formulas are calculated. They all have the error "A value used in the formula is of the wrong data type". It seems that when the formula try to evaluate it self the date isn't there yet.
Solutions:
1) If I click in the cell, and just press ENTER, the formula is correctly evaluated. But then I would have to do this for all cells.
2) I click in the date cell, copy it, and then paste it in the same place, and all formulas in the sheet are evaluated!
3) I could iterate in all cells in my application, evaluating each one with evaluateFormulaCell method from FormulaEvaluator class. But I have a lot of formulas and the performance of this is terrible.
Does someone have a solution for this?
Thanks!!
Your date value isnt recognized by the excel formulas as a date, what you could do is have another cell dat will first take the datevalue DATEVALUE() of the cell filled using Apache poi.
Then direct your first level formulas to that cell instead of the one filled using Apache poi
Because Excel don't calculale automatically, so just change this.
Excel 2010: File -> Options -> Formulas: Find Workbook calculation, and change to Automatically.
It worked for me.
To solve this, I changed all formulas in my template, to use instead of the regular formula sintax (=SUM(A:D)) the following sintax:
$[SUM(A:D)]
http://jxls.sourceforge.net/reference/formulas.html

Supporting numbers with preceeding zeros in General formattted cell in Excel

I have a requirement that a excel cell should support formula and also numbers with preceding 0s (like 000110).
The solutions I tried like setting the cell type to Text, or adding apostrophe (') in front of cell value resulted in the loss of formulas support.
Please help me if there is any way where the above requirement can be satisfied.
Additional information:
The excel is being generated by our application which uses POI interface to read and write the excel sheets.
Use a custom format. To always display six digits, the custom format string would be 000000. If you need decimal places be sure to add those.
Right Click on the Cell or on whole column
Click on Format Cell
Click on Custom
Enter 6 zero's 000000 and click Ok
Refer the snapshot

Resources