How to put formula in Data Validation List Excel? - list

I am creating an excel sheet with following Data Validation drop down list.
NA
Done
(add some formula here)
Basically, i will be able to select either plain text "NA"/ "Done" from the dropdown list. But sometimes, I want the user to be able to calculate some values based on the cell respective to the row selected so, I want to have one formula as a choice inside the data validation dropdown list. Is this possible?
Data Validation List Source
When I click on Formulae option, it should execute the formula with respect to the cells in that Row
But currently, the formula that i put in doesn't execute, instead it will just show the whole formula in the cell when activated.
1)How can i make it so that when i select the formula from data validation list, it will execute it instead of filling up the cell with it?
2)How do i set the formula so that it will be using the cell from the current Row? (for example, if i am using the data validation List in N60, the formula should adapt itself to use the cell (let's say A60?).

I may not be able to help with the second part, but I was seeking an answer to the first and discovered a solution/workaround using Name Manager.
First, in Formula > Name Manager, create a new reference (the "refers to" will contain whatever formula you are wishing to ultimately display in the validation list. For this example, we use the formula reference "=IF($H54=..." and Name it "UniqueName"
Now, we go into Data Validation, Select List, and input the three items we want displayed in the list, with an equals sign preceding our newly named reference: ie. "NA,Done,=UniqueName"
Note: You can't start with the =UniqueName or validation will try to read it all as a formula and fail.
This method will allow the user to display "NA", "Done", or "=UniqueName" in the cell; if "=UniqueName" is selected, the cell itself will interpret this as a formula and execute it accordingly, displaying the results of "=IF($H54=...", or whateverelse you have designated to use as a named formula.
If it's too late for yours, I hope this helps someone else who may face a similar problem.

While I think I know what you're trying to say. Why don't you just use an IF formula to evaluate everything instead of selecting a drop down for every row manually. You already had it partially solved using IF. Just need to add the criteria for a "Done" and an "NA"
=if(A1="date","Done",if(A1<"date","NA",if(something else until you have all your catergories))

Just going to piggyback off of Mark's response.
If you really needed your named formula to be the first selection in the list, you can setup your list with a leading comma like so:
,=UniqueName,NA,Done
That worked out for my use, and there was no null item listed in the Data Validation drop down. Hope that helps!

Related

How to make Index & Match functions on GG Sheets match blank cells?

I have one table of data (A) with data values, and a second table (B) which serves as a key that categorises/groups those entries into categories.
I am trying to write a cell formula that will list the category that corresponds to the data value in (A).
Some of the entries in the data table are empty, i.e. have no input data.
Case in point:
A13 has an empty cell, according to table (B), I specifically want the blank cell to be categorised as "Other". At the moment the sheet thinks cells like these are "null" and not "blank" and therefore returns #N/A.
I have tried adding an IFERROR function, which works at this stage but does not suit the scenario where a new data entry is entered as that will initially show as "Other" too when it should be something else, so I want to avoid using:
=IFERROR(INDEX(D2:D13,MATCH(A2:A13,E2:E13,0)),"Other")
Current cell formula for col B:
=INDEX(D2:D13,MATCH(A2:A13,E2:E13,0))
Please can you help? I've found plenty of articles on how to ignore blank/empty cells, but nothing to include them.
Many thanks!
OH
Shared link of problem
Screenshot of problem
use ifna like:
=IFNA(INDEX(D2:D13, MATCH(A2:A13, E2:E13, 0)))
update:
=INDEX(IF(A2:A13="",,IFERROR(INDEX(D2:D13,MATCH(A2:A13,E2:E13,0)),"Other")))

Creating a formula using INDEX and IF

I want to create a formula where I take the newest value on a cell. The information is updated when someone fills out the Google Form. Basically, there is some information the customer might not fill out, so the information is sparse.
What I want to create is a formula where it always takes the very bottom value of the spreadsheet (newest information). Even if the cell was blank, I want it to output as blank, and if there is an information on that cell, output it as that written value. Is this possible using INDEX and IF formula? Or is there some other formula to solve this problem.
If this doesn't make sense, please comment and I'll answer.
=INDEX(A:A, COUNTA(A:A))
let form sheet be:
then to get last form entry row use:
=ARRAYFORMULA(INDIRECT("form!"&
MAX(IF(form!A:A<>"", ROW(form!A:A), ))&":"&
MAX(IF(form!A:A<>"", ROW(form!A:A), ))))

Copying data from one sheet to another based on value in a cell

I have a Google sheet with multiple sheets.
The Ambassador users sheet has a list of multiple users (ID, Email, Coupon, and three more irrelevant columns).
Each new user is updated to the sheet via Zapier.
I can have three users with coupon 1234, four with ABCD and two with XYZ.
I then create a unique sheet for each type of coupon (also via Zapier) and want to update each sheet only with the users that have the correct coupon for that sheet.
The coupon is also listed in cell J1 on each sheet.
I need the update to happen automatically without pressing any buttons.
I do not know how to use the functions on Google sheets (I understand it's different from VBA), and I though using a function would be the best solution.
I tried using the IF function in conjunction with the INDEX function and it worked, however, it requires me to copy the function into each row, and thus reduces the automation option.
=if('Ambassador users'!$C3=$J$1, index('Ambassador users'!A3:G3),"")
Then I tried to use the IMPORTRANGE function, and this worked, but not in conjunction with the IF
=if('Ambassador users'!$C2=$J$1, importrange("1QHGSCR_pVepNlMtjFshvGnI-vSPzgqi3g9jz98","'Ambassador users'!A2:G11"),"")
This gave me all the rows in the Ambassador users sheet.
I think I'm doing something wrong with the IF statement in the initial range I'm setting is wrong.
I also tried to set a range in the IF, but that totally didn't work.
try like this with ARRAYFORMULA:
=ARRAYFORMULA(IF('Ambassador users'!C3:C=J1, 'Ambassador users'!A3:G, ))
or perhaps FILTER:
=FILTER('Ambassador users'!A3:G, 'Ambassador users'!C3:C=J1)

How can I use 2 cell validations on the same range?

I'm writing a database from a questionnaire, and I need certain cells to show a warning when another cell is blank and when is not certain values (like a drop-down list), how can I do that?
I'm actually using =not(isblank($AU2)) for the blank part, but now I need the drop-down list or something like that
custom formula would be:
=(A2=1)*(REGEXMATCH(TO_TEXT(B2), "^"&TEXTJOIN("$|^", 1, INDIRECT("Lists!B2:B")&"$")))

Sales list force change of column in lines

I'm using the page below a POS sales list. Here the user can use the barcode pistol and pass the article and the code is translated into the item no.
The problem is when they use the pistol and end to pick a item and want to pass to next one the line go automatically to the first column (Item type) and my goal was to force to go into the second column (Item no), because the Item type is by default the type "product".
Only change the order of columns of Item no to Item product is not enough in this case.
Since ACTIVATE is not supported for controls in RTC.
Not many good options here.
Try using QuickEntry Property. Set it to false for all controls on subpage except No..
Create custom page with as less fields as possible, use it as buffer to scan all items and create sales lines upon closing of this new page. You can implement desired behavior on this page and keep original page almost unmodified
Create add-in that will intercept scanner output somehow.