Combine column cell interchangeably in one column - google-sheets

Let us assume we have the following tow columns :
column 1
1
3
5
column 2
2
4
6
the result column
1
2
3
4
5
6
and in case the two columns are not equal in size, the combined result should be without empty cells at the end!

=FLATTEN(A1:B)
=TRANSPOSE(SPLIT(TEXTJOIN("♦", 1, A1:B), "♦"))
=INDEX(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
IF(A1:B="",,"♦"&A1:B)),,99^99)),,99^99), "♦")))

Related

Google Sheets: Query and list the last 5 values in a column if the column contains a number

I want to use Sparkline for a spreadsheet to show a trend of the last 5 soccer matches, where A and B are the goals, and C are the resulting points.
In column C, the points are only generated if values are entered for the goals and goals conceded, i.e. the columns are not empty.
A (Goals)
B (Conceded)
C (Points)
4
4
1
4
4
1
4
4
0
3
4
4
1
0
4
0
As you see, in row 3, column c is empty.
What I basically try to achieve, is to create a list where the last 5 entries which are not empty / null, are listed:
C (Points)
1
1
3
1
0
Is used this formula, but it somehow does not work
=query(J15:J114,"select * offset "&count(J15:J114)-5)
shorturl.at/gHPY9 (example result picture)
Tried to find a solution myself, but am stuck.
Best,
Feal
Use query() with a where clause, like this:
=query(
J15:J114,
"where J is not null
offset " & max(0, count(J15:J114) - 5),
0
)

Spreadsheet: Sum of dynamic number of rows

I have a table in my Google Spreadsheet that looks like this :
Row
(A) Some day
(B) Some data
1
day 1
5
2
day 2
10
3
total
4
day 1
8
5
day 2
7
6
day 3
9
7
total
Where I can have multiple "day rows", but I don't know how many. It can be only 1 like it can be 20 "day rows". And I want the "total row" to automatically do a SUM of the "day rows" above.
Result expected :
Row
(A) Some day
(B) Some data
1
day 1
5
2
day 2
10
3
total
15
4
day 1
8
5
day 2
7
6
day 3
9
7
total
24
Where B3 is equal to SUM(B1:B2) and B7 is equal to SUM(B4:B6)
I am trying to do that without the App Script, just using Spreadsheet native functions.
I think I should be using the SUM function or the Query function, but I don't know how to dynamically get the right range. Do you have any idea how to do that ?
Thank you
In your example, column B would be a mixture of constants and formulas. That would require a script to deposit the formulas. However with an extra column, you can avoid scripts. In C2 enter:
=if(A2<>"Total","",sum($B$1:$B1)-sum($C$1:C1))
and copy downwards:
Basically we add column B and subtract any previous Totals in column C.
Another approach is to place the following single array formula in C1:
=ArrayFormula(IF(A:A="",, SUMIF(IF(ROW(A:A),ROW(A:A)), "<="&ROW(A:A),B:B) - SUMIF(IF(ROW(A:A), ROW(A:A)),"<="& VLOOKUP(ROW(A:A)-1, FILTER(ROW(A:A), A:A="total"), 1, TRUE), B:B)))
If you only want to see the values for the "total" rows, change the opening
IF(A:A=""
to
IF(A:A<>"total"
The short version of how it works is that a sum is made of all values up to the current row in B:B, and from that is subtracted any values up to the last listing of the word "total" in A:A.
paste in each cell in B column where A column = total
=INDEX(SUM(IFERROR(1*INDIRECT(ADDRESS(MATCH(INDEX(
COUNTIFS({"total";A:A}, {"total";A:A}, {"total";A:A}, "=total",
{ROW(A:A);ROW()}, "<="&{ROW(A:A);ROW()})-1, ROW()+1, 1),
COUNTIFS({"total";A:A}, {"total";A:A}, {"total";A:A}, "=total",
{ROW(A:A);ROW()}, "<="&{ROW(A:A);ROW()}), 0), 2)&":"&
ADDRESS(ROW()-1, 2)), 0)))

In google sheets if I have two columns next to each other, how can I combine them automatically into a single column? NOT concatenation?

So in other words if column one is
1
2
3
and column two
4
5
6
There should be just one column
1
2
3
4
5
6
Thanks
You can combine ranges by putting them in brackets {}, with the ranges separated by a semicolon ;.
In your case you would have ={A1:A3;B1:B3} in the cell you wish to put your new list in (A1:A3 being column one and B1:B3 being column two). Change the ranges as you need, accordingly.

Excel formula to increment every third row by 1

I want to write a formula that will increment every third row by one while filling the previous rows by the previous number incremented.
Ex.
1
1
1
2
2
2
3
3
3
Thank you for your help,
Oscar
Integer divide of rownumber - row on which we start by 3, plus 1, or
=QUOTIENT(ROW()-1;3)+1

How can I select the bottom-most populated field in a column?

I have several sparsely-populated columns:
1 8 9
3 1 7
7 2
3
I'd like the following values from the bottoms of the columns: 7, 3, 7, 2.
How can I do this?
This formula returns the number of the last non-zero cell in the column A:
=arrayformula(max(if(A1:A<>"";row(A1:A);1)))
Then you can use =index to get the value of the corresponding sell.

Resources