I have a survey going out with Google Forms, but to analyse the results, I would need to concatenate some cells. However, due to the nature of Google Forms, whenever a new response is recorded, a new row is added. I've read around, looking at different forums and tutorials, but can't seem to find anything that works.
Some of the places I've looked are:
concatenate column values for each row that gets added after google form submission
https://productforums.google.com/forum/#!topic/docs/0Os52U-0i1k
So what I would need help with is if it's possible to concatenate results from a Google Form without having to manually copy the formula in the cells whenever there are new responses. I've tried ArrayFormula, but I can't seem to get it to work. Any help would be much appreciated!
ArrayFormula(A2:A & B2:B) should do the trick.
Note that the formula will persist even if you put it directly at the end of the form and then add a new field.
It will just be shifted to the right, so you don't need to worry about taking care of that when you modify your form.
The CONCATENATE function is a Google spreadsheet function that combines two or more text strings into a single string. It appears in the dropdown menu for functions above cell A1, and when you select it, it places an =CONCATENATE()= formula in the selected cell.
Note that you may need to replace spaces with "&" if your text has spaces.
In order to perform this operation on Google Forms though, you will need to set up Form Embeds by making sure you have the input type of "google form embed." When embedded forms are enabled, there is no need for individual cells within a google sheet workbook with custom formulas next to each question result button as they're all being calculated.
You can find more info on CONCATENATE by referring to this.
Related
I have a Google Sheet that I'm using as a database for a an app I am building in AppSmith. Really just an interface for people to work with the sheet in a controlled manner.
I'm using the Google Sheet because I'm familiar with layering formulas to make it work the way I want it to work. I have a number of columns that start with an ARRAYFORMULA that gives the name of the column in row 1, blank in blank rows that should be blank, and some programmed information in other rows.
This works great as long as I am working from the spreadsheet or reading/adding rows from the app.
However, when I try to edit the row from the app, the API update will take the "50" that it sees in the column and actually put "50" in the cell, breaking the arrayformula.
Is there any way to prevent API calls from actually editing that column? Or to automatically clear the cell and let the arrayformula expand again?
I found a temporary workaround to push "" for the column(s) I know are arrays, but it seems vulnerable to complications if I add other array columns later, or want to make another form in the app that also updates the sheet.
As a "rule of thumb", avoid having formulas on sheets being used as "databases" (top row used for field names, 2nd row and below used for data). If you really need to use formulas in the spreadsheet instead of doing the calculations on the "APP", add them on a "mirror" sheet.
This is a common recommendation when using ARRAYFORMULAS to do calculations with data comming from Google Forms.
If you think that creating a "mirror" sheet might cause more problems than benefits, if your "APP" is able to limit the number of columns being edited, put the formulas to the right of the last column linked to the app.
Related
Make Google Spreadsheet Formula Repeat Infinitely
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
I have a worksheet being fed by a Google Form. I want the responses on the Google Form to populate two fields in the next tab. The B column in the second tab is the one beyond my skillset. I have written out how the field should display, based on the form responses for reference. I also have used comments on the sheet to explain the rules for each field.
I know split function can be used but it wont adjust it. any possible solution.
Here the Sheet link
https://docs.google.com/spreadsheets/d/1ueKCNdcn1xmJHYtrzKKKkj_FSraRfpvJS4Oi3BHNUvk/edit?usp=sharing
I've added an answer on your sheet. Since the data is all delineated by semi-colons, this formula seems to match what you want.
=SPLIT('Import Data'!B1,";",0,0)
Let us know if it doesn't do what you want, or if this helps.
Updated: After checking with you, I realise that you want only some of the data split, and some kept concatenated. But since all of the data "fields" look the same, separated by semi-colons, and since there could be various numbers of fields in each response category, I don't think there is a simple logic that can tell where to split, and where to keep things like dress styles or sizes concatenated. So I understand that this is not your desired answer.
I have a Google spreadsheet and autocomplete is only working for the columns I am typing in, meaning if there is word1 in the column I am typing in, and I start to type a word, it will suggest word1, but WILL NEVER suggest word5 from the column next door. I am trying to make autocomplete data shared for all columns and rows.
Example 1-a:
Example 1-b:
See what I mean? I'd like for autocomplete to suggest the word WORRY but it won't. I am trying to share autocomplete data across the entire spreadsheet rather than just to individual column data.
unfortunately, that is not possible to achieve. autocomplete is available only in few cases when in the same column. best you can do is to use Data Validation on the whole sheet (selection) with disabled dropdown menu (for visual) but this can have undesired result in the form of a red arrow in the top right corner of the cell.
I found the answer since this is, from what I hear...not possible.
The linux program ... "TextSuggest".
Easily download and install TextSuggest from the AUR repo.
yay -S textsuggest
It will do exactly as Google Sheets autocomplete feature does, but within your entire Linux system.
If you wish to see/learn more, here is a nice article/review on it.
https://www.omgubuntu.co.uk/2016/06/quick-text-autocomplete-desktop-linux
TextSuggest is the best alternative to the "not possible".
Using Google Forms checkboxes to collect survey responses into a Sheets doc, I find that I can only get the values of checked lines to fill the spreadsheet.
I'm trying to get the unchecked CheckBox values to fill a different cell in the spreadsheet as well, has anyone found out a way to do this?
I'd appreciate any help!
I have a way with spreadsheet formulas.
The drawbacks are the necessities of
manual input of all possible options
copying and pasting a formula for each response (can be done in advance, but if not enough formulas are pasted for the number of responses, the sheet will break)
An ideal solution would automatically detect all possible responses, and could theoretically accept an infinite number of responses without breaking and needing maintenance.
With that said, he's an example of what I suggest:
Google Sheet
Google Form
All possible options on the form must be typed into cells A2:A
cells B2:B show comma+spaces if the corresponding cell in A2:A is not blank, with =arrayformula(if(isblank(A2:A),"",", ")). These commas and spaces are needed later in a concatenate().
Raw data from the Form Responses spreadsheet was brought into D2:E with =arrayformula('Form Responses 1'!A2:B)
G2:G holds the important formulas. They must be copied and pasted to each individual cell for each row.
First, all possible responses in $A$2:$B are filtered based on if the cell in column A can be found in the text in column E.
=filter($A$2:$B,arrayformula(iserror(search($A$2:$A,E2))))
Next, some error catching. I added an iferror() to catch a "N/A, no results found in filter evaluation", and an if(isblank(),"",) to catch if no timestamp is in column D meaning no response was recorded in this row.
=if(isblank(D2),"",iferror(filter($A$2:$B,arrayformula(iserror(search($A$2:$A,E2)))),""))
Finally, do a concatenate() to pull the values and the comma+spaces all into one string inside one cell.
=concatenate(if(isblank(D2),"",iferror(filter($A$2:$B,arrayformula(iserror(search($A$2:$A,E2)))),"")))
Oh, and if you don't like the comma+space being the last characters in the string, in J2:J I did a =arrayformula(iferror(left(H2:H,len(H2:H)-2),"")) which cuts off the last 2 characters of the string in column H.
If I come up with a better solution, I'll let you know. It's an interesting puzzle to solve.