I have two sheets in a google sheets document. They look something like this:
| Date | Value |
| 2015-01-01 | 100 |
| 2015-02-04 | 200 |
| Date | Value |
| 2015-01-01 | 100 |
| 2015-05-04 | 150 |
The dates and values are NOT regular. I'd like to plot both tables into a single line graph with date along the x axis, and two lines representing the values in each of the tables respectively. I don't want to have to merge the two tables, unless I can merge them automatically with a pivot table or something.
When I insert a chart, I have to choose the column which represents the x axis. In my case, I need the date column from both tables, so effectively two columns to represent my x axis.
A use case for this is simply showing the bank balances for two separate accounts in a line graph.
Thanks.
You can create another table on a new sheet that will merge the data columns from each of these tables, and then have two VlookUp columns, one for each table, and create a graph based on these three columns.
two merge Data columns from two different sheets use this
=FILTER({Sheet1!A:A;Sheet2!A2:A},{Sheet1!A:A;Sheet2!A2:A}<>"")
Your second column will will have the following VlookUp formula
=IFERROR(VLOOKUP(A1,Sheet1!A:B,2,false))
Third Column
=IFERROR(VLOOKUP(A1,Sheet2!A2:B,2,false))
Then just make a graph based on this table that should look something like this
| Date | Value |Value |
| 2015-01-01 | 100 | |
| 2015-02-04 | 200 | |
| 2015-01-01 | | 100 |
| 2015-05-04 | | 150 |
Related
I have a list of numbers in Column B corresponding to different rownumbers in Column A (for example, in B1, I have the list {1,2,3}).
I would like to turn this list into a list of cells ({A1,A2,A3}) and apply a formula to that list in Column C (for example, I would like to AND them together).
Column A always contains Boolean Values.
Column B will always contain valid rownumbers separated by a comma.
I would like a formula that I can put in Column C and drag down and extract the numbers from (for example using =SPLIT(B1,",")) and then apply a formula to.
Shown in the table below is a sample of what I would like to achieve. Note that Column C contains a manual entry approach that I would like to avoid.
| Column A | Column B | Column C | Column D (expected ouput)
| -------- | -------- | -------------- | -----------
Row 1 | TRUE | 1,2,3 | =AND(A1,A2,A3) | FALSE
Row 2 | FALSE | 2,4 | | FALSE
Row 3 | FALSE | 4,6,2,1 | | FALSE
Row 4 | FALSE | 2 | | FALSE
Row 5 | TRUE | 1,5 | | TRUE
Row 6 | FALSE | 1,5,3 | | FALSE
Some things I have tried include using
=INDEX(A:A,SPLIT(B1,","),1)
=AND(ARRAYFORMULA(INDEX(A:A,SPLIT(B1,","),1)))
I have also tried moving around the order of the formulas in the above equation to no avail.
I have only managed to get my formula to be affected by the first rownumber in column B.
You were very close! With BYCOL (considering that the SPLIT result is a serie of cells in columns) you can get the INDEX of column A; and wrap it in AND:
=AND(BYCOL(SPLIT(B1,","),LAMBDA(i,INDEX(A:A,i))
If you want, you can wrap it in BYROW to apply to your whole range:
=BYROW(B:B,LAMBDA(b,IF(b="","",AND(BYCOL(SPLIT(b,","),LAMBDA(i,INDEX(A:A,i)))))))
I have a stylized table, not laid out like a database. Some rows contain titles, some rows contain data across various columns.
I would like a formula that will search Column A for all instances of "Title", then offset the results by a chosen number of rows and columns.
The data would look something like:
| Title: | title1 | | |
| Data | Value | Data2 | Value2|
| | | | |
| Title: | titel2 | | |
| Data | Value | Data2 | Value2|
I'm trying to find all instances of "Title:" and return "Value2", specifically by using INDIRECT(ADDRESS(ROW()+1,COLUMN()+3)) function in conjunction with QUERY.
I'd be happy with an alternative formula to INDIRECT ADDRESS, so long as I can select the number of rows and columns to offset.
Thanks.
I have a Google Spreadsheet with multiple sheets. I cannot share a sample because this is G-Suite Enterprise and it is locked. If absolutely needed I can create a dummy one on my personal Gmail.
One of the sheets has a list of lookup values and sheet names. I am trying to come up with an ARRAYFORMULA that will count the # of times Lookup Value shows in column A of Lookup Sheet Name.
| Lookup Value | Lookup Sheet Name | Count |
|--------------|-------------------|-------|
| one | Primary | ... |
| two | Secondary | ... |
| three | Stuff | ... |
| ... | Primary | ... |
| ... | ... | ... |
I came up with this formula For C2 but it does not work. I don't exactly know why but it shows 1 for every lookup value or just one row with 1.
=ArrayFormula(IF(A2:A <> "", COUNTIF(INDIRECT(B2:B & "!A2:A"), A2:A), ))
I do not want to use Google Apps Script to solve this.
Here is one possible solution that combines the values of the different sheets in one by adding a second column with constant value (the name of the seet for example).
=ArrayFormula(
IF(A:A<>"",
COUNTIFS(
{
FILTER('sheet A'!A:A,NOT(ISBLANK('sheet A'!A:A)));
FILTER('sheet B'!A:A,NOT(ISBLANK('sheet B'!A:A)))
},"="&A:A,
{
FILTER(IF(ISBLANK('sheet A'!A:A),,"sheet A"),NOT(ISBLANK('sheet A'!A:A)));
FILTER(IF(ISBLANK('sheet B'!A:A),,"sheet B"),NOT(ISBLANK('sheet B'!A:A)))
},"="&B:B
),
)
)
I am building a list of gigs I attended and I want to count how many times I've seen each band.
I know about UNIQUE, but because I keep each band in separate column it just copies each row.
Given the table (or screenshot of real data):
| Date | Venue | Bands |
|----------|--------|--------|--------|--------|--------|--------|
| 02.02.17 | Venue1 | Band A | Band B | Band C | Band D | Band E |
| 02.07.17 | Venue3 | Band D | Band C | | | |
The output I want:
| Band | Attended |
| | (times) |
|--------|----------|
| Band A | 1 |
| Band B | 1 |
| Band C | 2 |
| Band D | 2 |
| Band E | 1 |
I can change structure if needed.
What happens after using UNIQUE: https://i.stack.imgur.com/qmszk.png
Thanks in advance.
Step 1. Get list of all unique bands in one column, one per row
=ArrayFormula(UNIQUE(TRANSPOSE(SPLIT(CONCATENATE(Gigs!D2:Z&CHAR(9)); CHAR(9)))))
Step 2. Place this formula in next column, and drag it down
=SUM(COUNTIF(Gigs!D:Z; E2))
Transform your data to a simple table format in order to make easier to do data-analysis.
A simple table use the first row for column headers a.k.a. fields and has one and only one column for each entity, let say only one column for band names.
The above could be done in a single but complex formula hard to debug, so it's better to start by doing this using simple formulas and once you are certain that all is working fine, think about making a complex formula or writing and script.
Related
Unpivot Matrix to Tabular. Using counts of two variables into individual rows
Generate a list of all unique values of a multi-column range and give the values a rating according to how many times they appear in the last X cols
Normalize (reformat) cross-tab data for Tableau without using Excel
How do you create a "reverse pivot" in Google Sheets?
I'm trying to write a SQL query in Google Sheets to try and get data for "matching" results from two different tabs, but running into some trouble.
This is a sheet that's basically an automated scoring engine for instructors who take a two-part test (written and practical). After the results are entered, I'd like to use some SQL to take the results from the two tabs and collate them into a final score.
Link to the sheet in question.
There's a "Practical Scores" tab (which takes all the data from the associated Google Form), and a "Written Scores" tab. I'd like to get the name of the instructors who match in both those tabs, and give the associated score for them, but I'm mostly having trouble with writing the correct SQL.
Most of what I'm trying to do is working fine. I'm able to pull the final practical scores via the following SQL:
=query(PracticalScores!A2:E, "select A, count(E),SUM(E)/3 group by A")
I can also pull the written scores as follows:
=query('Written Scores'!B2:C,"select B,C")
But I want the intersection of the two as well, and that's where I'm running into problems.
=query(A8:E, "select A,C,D where A = E")
will simply return the rows where the names match up, and I want the instances where the names match up, regardless of whether the rows do.
That is, I want all the rows where the names match from tab 1 to tab 2 and not just the few rows that happen to line up perfectly.
If I'm not explaining this well, please let me know and I can provide additional information. Any assistance would be very greatly appreciated!
Since the query function does not support joins, this can't all be done in one query. Instead, the following device can be used:
=arrayformula(vlookup(name column, table, # of column to extract, False))
For example, suppose I have a table
+---+-------+---+
| | A | B |
+---+-------+---+
| 2 | Jim | 3 |
| 3 | Sarah | 4 |
| 4 | Bob | 5 |
+---+-------+---+
to which I want to add another column, taking it from
+---+-------+---+
| | E | F |
+---+-------+---+
| 2 | Sarah | 9 |
| 3 | Bob | 8 |
| 4 | Jim | 7 |
+---+-------+---+
The basic idea is to put in cell C2 the formula
=arrayformula(vlookup(A2:A, E2:F, 2, false))
which will look up every name from first table (column A) in the column E, and return the matching value in column F. Result:
+---+-------+---+---+
| | A | B | C |
+---+-------+---+---+
| 2 | Jim | 3 | 7 |
| 3 | Sarah | 4 | 9 |
| 4 | Bob | 5 | 8 |
+---+-------+---+---+
In practice, one should filter out empty lookup values to improve performance:
=arrayformula(vlookup(filter(A2:A, len(A2:A)), E2:F, 2, false))
If the second table contains some names not present in the first, they will not be returned by the above formula. In this case it is better to prepare a full list of names, for example with
=sort(unique({Sheet1!A2:A; Sheet2!A2:A}))
which collects the names from A columns of two sheets, eliminating duplicates and sorting. Then look up those using vlookup as above.