How to change textual data into neumerical data in google sheets? - google-sheets

I am relatively very new to the google sheets and excel, there is a task I need to perform.
I have a google form, that is taking user response and storing Data in a google sheet, the values are textual verbiage and I want to change this to corresponding numerical data.
What I have tried so far is, I have created a new sheet and with the help of query function I am storing this data into a different sheet, Is there a way to write a query function in a way, with the help of IF statements where it converts the data into numerical values.
The query I am using to fill the data in the next sheet.
=QUERY('Form responses 1'!A1:AF)
Is there a way where I can modify this query and get the result like this in the next sheet?
where value of "you slightly feel this way." should convert to 1
and value of "you somewhat feel this way (and somewhat not)." should convert to 2
or what is the other way to achieve the same result if not the queries?

Related

combine data from selected sheets

I have a spreadsheet that has a lot of sheets of data grouped by category. I have a main sheet that I want a user to be able to choose which categories of data to use, and it will pull that data into one long list.
Here is an example spreadsheet of what I want to do: LINK TO SHEET
I could combine all the data into one spreadsheet, but if I were to do that with the dataset I am working with, I would have tens of thousands of rows. So, having the data stored on separate sheets is preferred. I am open to having separate spreadsheets altogether if that will make it easier. Currently, I have tried Using INDIRECT and QUERY, but can only get the first sheet of data to show.
I would prefer to stick to normal functions, but could jump into appscript if I need to create a custom formula
I have tried using INDIRECT and CONCAT, and can get the first set of data, but not subsequent data. Also tried wrapping it in a query like this:
=QUERY({ARRAYFORMULA(INDIRECT(CONCAT(A2:A,"!a2:z100"))},"select * where Col1 is not null",1))
Splitting it up into separate spreadsheets, I was able to use the function:
=QUERY({ARRAYFORMULA(IMPORTRANGE(B2:B,"A1:Z10"))},"select * where Col1 is not null",1)
But it also would only pull the first set of data, not the subsequent rows.
All of this was me first attempting to get the information, not getting the information filtered by the sheets that were checked as well. I am pretty familiar with appscript as well and open to appscript solutions, but would prefer to stay away from it if possible.
You do not need additional column. Use REDUCE() with few other formula-
=REDUCE(HSTACK("Dataset Name","Data 1","Data 2","Data 3","Data 4"),FILTER(A2:A,B2:B=TRUE),
LAMBDA(x,y,VSTACK(x,QUERY(INDIRECT(y&"!A2:E"),"where A is not null"))))

Creating headers (and footers) in the middle of returned query data with Google Sheets

I have a table of data that I want to turn from raw data into something a little 'prettier' and organized to look at.
The data consists of payments made (3 columns: Name, payment amount, and date of payment).
I'd like to present the data so that for each group of dates that are the same there is a header above those rows with the date itself so the user can see these rows of dates are for say 1/14/2023.
Then the next set of rows for say 1/15/2023 would have the header 1/15/2023.
Please see the attached image.screenshot
In columns A - C is the raw data and I don't know how many and which dates there will be a priori. In columns E-G is the desired output.
You can see I'd also like if possible a footer that sums the totals for that day.
Any ideas on how to achieve this? The ideal solution would be such that you could paste raw data into columns A-C and then the data shows up in columns E-G formatted. I'm hoping there's a design pattern for this type of thing before I cobble together a solution.
I've implemented something through Apps Script, but am more interested in learning if there's a way through the formulas provided in Sheets.
I can see this possibly being done with temp/work tables, but am wondering if this is a common problem/solution and would love to get pointed in the right direction. I'm a programmer and have been using sheets for about a year and can write queries and filters and do lots of things but want to learn the right way and not always just do something the first way that pops into my head that works.
try this formula along with a bit of conditional formatting to get the expected output.
Headsup: Set Columns E, F to DATE Type formatting
=LAMBDA(czx,MAP(INDEX(czx,,1),INDEX(czx,,2),INDEX(czx,,3),LAMBDA(ax,bx,cx,{ax,IF(ISNUMBER(ax),{"",""},IF(ax="TOTALS",{"",cx},IF(LEN(ax),{bx,cx})))})))(SORT(LAMBDA(ax,FILTER(ax,INDEX(ax,,1)<>""))({BYROW(UNIQUE(B:B),LAMBDA(bx,IF(bx="",,{bx,bx,0})));A:C;BYROW(UNIQUE(B:B),LAMBDA(bx,IF(bx="",,{"TOTALS",bx,SUMIF(B:B,bx,C:C)})))}),2,1))

How to make google form responses submit to bottom of spreadsheet and not ignore manually entered data in the spreadsheet

I have a spreadsheet with responses from a form, but occasionally we manually enter responses into the spreadsheet that do not come in through the google form. I would like these to remain in order with the form responses, but when a google form is submitted it inserts the next form response after the last form response and shifts the manually entered data on the spreadsheet down.
Is there a way I can get the manually entered data to be recognized when the form submits and always append the latest form response to the bottom of the spreadsheet?
I followed this answer here but it doesnt work for me, it still ignores manual entries. Any help is appreciated.
You cannot have automated data and manually entered data in the same range.
For instance, if you use an array formula on a sheet in in B:B, the array formula "owns" B:B. If you then enter manual data anywhere in B:B, you will "break" the array, all of your formula data will disappear and the original formula cell will show an error. Think of that error as Google Sheets' way of saying, "Looks like you decided that you want to use this range for manual data now instead of formula-produced data, so it appears your formula is now not what you want."
The same concept is true for form integration. A form does not "read" cell from your Google Sheet. It just outputs data to it. It's a one-way conversation, so to speak. As such, the form doesn't know what else you are doing on the form-data intake sheet. It only knows how to find the information that marks where it left off with the last submission; and then its instructions are to enter a new line below that point for the next new submission.
In other words, a form "owns" the sheet you integrate it with. And the form will do what it is programmed to do, regardless of whether you try to also "own" that sheet by typing into in manually.
The simple solution: always use your form to enter data.
If you say to yourself, "But using the form is more work than manual entry," it's time to rethink your form and your user experience, since forms are meant to make data entry easier than manual entry into the spreadsheet, not harder.
This sounds plain, but i keyed in the timestamps columns of manually entered data to any earlier date and sorted the data by timestamp. the new data from the form would populate the bottom rows after
however new responses doesn't take your formats n formulas..maybe u have to export it for calculations etc
hope this helps

Why does the =SUM() function not work with numbers transmitted by query in Google Sheet

Why does the =SUM() function not work with numbers transmitted by query in Google Sheet
Change the 1 at the end of your querys to a 0.
However, the way you've written those formulas is not a very efficient way to get the values you want and may slow down your sheet quite a bit if used at scale.

Filter GetRows on GoogleSheet Document via Logic Apps

I am reading from a google sheet of 100,000+ records but I want to load only the records after a certain date. ( so applying filter ) . But I haven't been able to accomplish that as I do not know how to access the column name without using foreach.
Here is what the data looks like from the googlesheet
So basically, I would like to filter the records something like this.
Timestamp ge '10/13/2021' so it will only return records for 10/13/2021 and 10/14/2021... etc.
Is this possible to do that? If not, what is the best recommended way to approach this issue as i just wanted to load daily records to sql db in the next step.
The Get rows action of the Google Sheets connector doesn't support filtering. You can only specify how many rows you want returned, and how many rows you want to skip. E.g. if you have 100,000 rows in your sheet, you can easily get the rows between 90,001 and 90,200, should you wish to do so.
While you can't use this connector to retrieve filtered data from Google Sheets, you can use the Filter array action to filter the retrieved data as you wish.
You might still need to use the For each loop to retrieve and filter data in chunks.

Resources