I have a dataset, consisting in a calendar with multiple values defined by a key. It goes like this:
I want to take the existing data and put it in a set of columns so I can make a dispersion graphic to see the tendency of the values. This is the format that I'm talking about:
What I specifically need is for the value on the cell D20 from the first dataset (which will be a timestamp from January 22nd, tracked with the key "HORA" in the cell C20) to appear in the cell B23 of the other dataset (which is the cell tracking the time at the January 22nd).
I've tried with all the lookup functions, hoping that VLOOKUP and HLOOKUP could return me an array of values that have the desired key (aka finding the key and returning cell 2), and even queries (with which I still have some issues understanding).
Thank you so much!
That kind of organization of data is not very efficient for applying formulas, but obviously it is visually nice. What I can think of is trying to "offset" with XLOOKUP:
=XLOOKUP(A2,FLATTEN(MUESTRAS!C1:AA500),FLATTEN(MUESTRAS!D2:AB501),,0)
See how the ranges are moved one cell down to the right. Adapt them if needed. You can use this as an ArrayFormula too:
=INDEX(XLOOKUP(A2:A,FLATTEN(MUESTRAS!C1:AA500),FLATTEN(MUESTRAS!D2:AB501),,0))
Related
Here's how it looks.
Hi. I'll try to be as specific as possible about this :)
I'm making a Google Sheet page similarly to a game character progression, that will automatically fill up based on data from other sheets: specifically, these "EXP" bars fill up with values based on the hidden cell A5.
For instance, the cells from D5 to BA5 represent LV1.
As the function shows, every time the value in A5 reaches an even number (for LV1, it's all even numbers from 2 to 100), one of the slots will fill up with a number, that with conditional formatting, will change the color of the cell and make it look like an actual exp bar filling up.
I'm using the function =COUNTIF(A5,">=2") and manually changing it to ">=4", ">=6" etc until ">=100" for the first bar. The second bar will have its 50 cells with all even numbers from ">=102" to ">=200".
So, to get to the question: is there an array formula that facilitates the process of filling a great amount of these bars with functions, without changing them all manually? Even automating *some *of this process would be great. Besides it being tedious, it leaves a lot of room for human error.
Thank you in advance to whoever's got an answer.
P
I haven't tried much as at the moment I am very confused by the vast amount of options array formulas provide. I have 48h of experience in the matter.
I suggest you to use the values of columns and rows here as helpers to do calculations. If you know that every column adds 2 and every row adds 100 you can set a formula like this for the whole range (select the whole range and add just one rule of conditional formatting):
=$A$5>((Column(D5)-3)*2+(Row(D5)-5)*100))
You use $symbol to make A5 steady and D5 value will "move" to each cell for conditional formatting, so you don't have to make an ARRAYFORMULA for this
I'm creating an expenses spreadsheet, and I want to be able to compare what each person has paid on each item, to what is owed. If it's < what's owed, it will be red, if =>, green. I know I can manually conditionally format each cell to do this, but I'm looking for a solution I can use to simplify the sheet for month-to-month editing, with potential to add new expenses or remove them without having to later manually conditionally format the new expense.
I've looked into a few others with similar questions and tried some custom formats. First I went with the simple "if less than column [whichever it is next to] set color to red" and no luck, and one suggested a formula like this: =($H2>=$G2)*($H2<>"") though honestly I can't say I fully understand it. I have a grasp on it to a certain extent due to my coding background, but not quite enough. I feel this would be way easier if I was coding and could just use a for each statement...
I expected the cells (specifically for the greater than function) to be green, but actually it's counting all cells as less than the ones next to them, regardless of the values.
Imgur images
your issue is that the conditional formatting is offset by 1 row because you trying to apply it on range H1:H13 but formulas you use works with range H2:H & G2:G. therefore do it like this where you start from H2:
I'm reformatting a sheet so I can utilise the data for some graphs. The existing formatting is a bit clunky to "transpose" to the required format, so I'm trying to figure out an easier way.
"Graphs" tab should transpose specific data from the "Statistics" tab - as can be seen. I'm trying to avoid creating manual cell references for the "Decks" column and instead extract the Col reference from the formula, increment it by 3, thus creating the next cell reference.
My attempt can be seen in A9.
I've tried googling how I can reference formula in a cell on a RIGHT function, but the keyword is giving a tonne of results that don't address my issue.
Here's the sheet!
https://docs.google.com/spreadsheets/d/1VKUhiwRGFMJOtDbLc0pqpckHFV7oNB2bjTqs2WqTqbo/edit?usp=sharing
=TRANSPOSE(FILTER(Statistics!H1:1, Statistics!H1:1<>""))
I'm back with another Google Sheets question. This one isn't scripting though - this time I'm looking for help in figuring out a formula.
I've attached screenshots of two sheets. The first one features one "opposing party" at row 8. The second one features an opposing part at row 8 and a second opposing party at row 9. Cell B3's formula is shown in both; in essence, Cell B3 looks for the first blank cell in column L after Row 10 (or Row 11 in the second image) and returns the contents of that row's "F" column. This allows me to "get" the next deadline in the matter that is being tracked. For those interested, yes, Cell D3 has a similar formula looking at K.
Currently, we have to manually update B3 (and D3) if we add additional parties (not necessarily opposing, and not just one either). This is more tedious than I would like. I would like a formula that would return "F10" and "L10" in situations where only one opposing party appears, "F11" and "L11" if there is an additional, and so on so that even if we have a massive, multi-party action it will still return the next cell.
If it helps, you can always assume that there will be a blank set of cells below the last "opposing party" and the row that we want to start querying (as shown in the second image).
I'd love any help that you can give. Please let me know if you need anything clarified.
Thanks a ton!
--Databoy2k
Is this what you require for B3?
=index(F:F, match("rule", I:I, 0)+1)
In a larger scope use,
=index(indirect("F"&match("Rule",I:I,0)&":F"), match(TRUE, index(isblank(indirect("L"&match("Rule",I:I,0)&":L")),0,0),0))
I think the easiest way would be to make the cells you are referencing a named range. That way, you can add as many other rows, columns, cells, whatever, and your formula will always reference the same range of cells.
For example, you could name the range of cells in column F 'Steps', and in K 'Deadline', then change your formula to =index(Steps,match(TRUE, index(isblank(Deadline),0,0),0)), and it will always give you the correct range.
Here's a pic to show how to name a range (right-click on the selection).
I am trying to find the average of the seven most recent entries in a row, as seen in
this
spreadsheet.
I found a few questions similar to mine, but I am still pretty confused on how the answers work. The questions similar to mine can be found on the left side of my spreadsheet.
I think that the formulas would work for me with a few simple adjustments of which values to use, but I can't seem to figure it out. I would really appreciate if someone could explain one of the existing answers or come up with another one that works.
The spreadsheet is updated daily, so I need something that would continue to work as more and more data is added to the column.
Try:
=round(AVERAGE(OFFSET(H1,MAX(ARRAYFORMULA(ROW(H:H)*--(H:H<>"")))-7,,7)))
here's working sample
Explanation
We are getting the last non empty row: MAX(ARRAYFORMULA(ROW(H:H)*--(H:H<>"")))
Then with offset formula we are getting the range of last 7 cells in a column.
And then just use AVERAGE.
More info
You may find more info about finding the last non empty row here:
Selecting the last value of a column
Another way is to use INDEX and MATCH. The first match finds the position of the last number in the range and takes 6 away from it: the second match finds the position of the last number in the range. Passing it through the INDEX function gives a reference that you can use to give a range of 7 cells for AVERAGE to work on.
=average(index(H:H,match(999,H:H)-6):index(H:H,match(999,H:H)))
So my answer is like your Link2
The big snag here is if you have a text cell in the range (like "Nothing") it is much more difficult to work out which cell to start from to get an average of 7 cells. I think I know how to do it in Excel using OFFSET but offset doesn't seem to work in the same way in Google Sheets.
However I can see there is a solution to this in your Link3 which should work for you if you change A:A to H:H and SUM to AVERAGE. I have tested it on the average of the last ten cells which includes a "Nothing" cell:
=ArrayFormula(AVERAGE(QUERY(SORT(H:H,ROW(H:H)*ISNUMBER(H:H),0),"select * limit 10")))
and it gives the correct answer 61.8.
The way array formulas work in general is that instead of passing a single value to a function you pass a whole range or array (a list of values) and the function processes them one by one. The above formula takes the whole column H:H and sorts it on the row numbers in descending order but those cells which don't contain a number give zero in the multiplication and are sorted to the bottom. Then the query takes the top (in my case) 10 cells and passes them to AVERAGE.
BTW this doesn't have to be declared as an array formula: this also works
=AVERAGE(QUERY(SORT(H:H,ROW(H:H)*ISNUMBER(H:H),0),"select * limit 10"))