Count adyacent non-blank cells in Excel/Google Sheets - excel

I have an Excel/Google Sheets table in which some rows contain blank cells in between non-blank cells. I would like to count from left to right. I have used the formula COUNTA(A2:F2) but it cannot achieve what I want. This is a sample of the outcome I would like to get, with the Personalized count that I am seeking to achieve and the classic COUNTA:

I think that the task is slightly different from what you describe in the question, you want to count until blank and not between not blank cells.
So I made this working example
+---+------+------+------+------+------+------+-------+
| | A | B | C | D | E | F | G |
+---+------+------+------+------+------+------+-------+
| 1 | 2021 | 2020 | 2019 | 2018 | 2017 | 2016 | Count |
| 2 | 1 | 1 | 1 | 1 | 1 | 1 | 6 |
| 3 | 1 | 1 | 1 | 1 | | | 4 |
| 4 | 1 | | 1 | 1 | 1 | 1 | 1 |
| 5 | 1 | 1 | 1 | | | 1 | 3 |
+---+------+------+------+------+------+------+-------+
where cell G2 contains the following:
=IFERROR(MATCH(1;--(A2:F2="");0)-1;COUNTA(A2:F2))
is it right for you?

Related

MS Excel's alternative for ={A:A} formula in Google Sheets

This must be a simple thing to do but somehow I am unable to find answer to this question. In google sheets, if you want to reference an entire column (e.g Column A) you will put ={A:A} and the entire column will be referenced. How do you achieve similar thing in MS excel?
EDIT: (Asked in comments to post specific example)
Lets assume google sheets contain the following data:
| A | B | C |
| 1 | 5 | 9 |
| 2 | 6 | 0 |
| 3 | 7 | 9 |
| 4 | 8 | 0 |
Now if in cell D1 I type ={A:A}, the entire column A will be shown in column D.
| A | B | C | D |
| 1 | 5 | 9 |={A:A}
| 2 | 6 | 0 |
| 3 | 7 | 9 |
| 4 | 8 | 0 |
becomes
| A | B | C | D |
| 1 | 5 | 9 | 1 |
| 2 | 6 | 0 | 2 |
| 3 | 7 | 9 | 3 |
| 4 | 8 | 0 | 4 |
I dont have to drag the formula to the bottom or anything. It just shows the entire column
How do I do the exact same thing in excel?
It depends. For example:
=COUNTIF(A:A,"gold")
Excel does not support stuff like:
=COUNTIF(A12:A,"gold")

How to reference cell in formula where result met condition

Is there a way to write a formula for Variation so that it always relates to the lastest cell where the Variation was greater than a threshold?
In the following table the denominator of the percentage changes if the absolute value of Variation is greater than 10%. The formulas were changed manually by me.
------------------------------------------
| Row | Value | Variation| Formula |
------------------------------------------
| 1 | 1,1608 | 0,0% | A2/ A$2 - 1 |
| 2 | 1,1208 | -3,4% | A3/ A$2 - 1 |
| 3 | 1,0883 | -6,2% | A4/ A$2 - 1 |
| 4 | 1,0704 | -7,8% | A5/ A$2 - 1 |
| 5 | 1,0628 | -8,4% | A6/ A$2 - 1 |
| 6 | 1,0378 | -10,6% | A7/ A$2 - 1 | <---- Abs. Variation > 10 %
| 7 | 1,0353 | -0,2% | A8/ A$7 - 1 | <---- Change denominator
| 8 | 1,0604 | 2,2% | A9/ A$7 - 1 |
| 9 | 1,0501 | 1,2% | A10/ A$7 - 1 |
| 10 | 1,0706 | 3,2% | A11/ A$7 - 1 |
| 11 | 1,0338 | -0,4% | A12/ A$7 - 1 |
| 12 | 1,0110 | -2,6% | A13/ A$7 - 1 |
| 13 | 1,0137 | -2,3% | A14/ A$7 - 1 |
| 14 | 0,9834 | -5,2% | A15/ A$7 - 1 |
| 15 | 0,9643 | -7,1% | A16/ A$7 - 1 |
| 16 | 0,9470 | -8,7% | A17/ A$7 - 1 |
| 17 | 0,9060 | -12,7% | A18/ A$7 - 1 | <---- Abs. Variation > 10 %
| 18 | 0,9492 | 4,8% | A19/A$18 - 1 | <---- Change denominator
| 19 | 0,9397 | 3,7% | A20/A$18 - 1 |
| 20 | 0,9041 | -0,2% | A21/A$18 - 1 |
------------------------------------------
Is it possible to write a formula where the denominator changes on a given condition?
All my attempts with Array formulas, MATCH, AGGREGATE etc. went to nowhere.
Here is another way:
Place zero in E2.
In E3:
=IF(E2<-0.1,B3/B2-1,B3*(E2+1)/B2-1)
So what I'm trying to do is to work out the denominator from the previous row. So
E2=B2/denominator-1
Re-arranging you get
Denominator=B2/(E2+1)
So in the regular case you divide by this denominator, otherwise you divide by B2.
If it's possible to add another column to your data, it is very possible to do this with one IF statement. Your formula for the formula row would be:
=A2/(E1-1)
Column E formula (starting at E2) would be:
=IF(ABS(C2)>10, A2, E1)
Where E1 would be:
=A2
since that is what you have by default in your first formula.

excel to count the duplicate in a column

I need to find the duplicates in this way.please help me
--|-----|-------|-------|-------|-------
| A | B | C | D | E |
--|-----|-------|-------|-------|------|
1 | 1 | a1 | 1 | | |
2 | 2 | a2 | 1 | | |
3 | 3 | a3 | 1 | | |
4 | 4 | a5 | 1 | | |
5 | 5 | a1 | 2 | | |
6 | 6 | a2 | 2 | | |
7 | 7 | a1 | 3 | | |
8 | 8 | a3 | 2 | | |
9 | 9 | a1 | 4 | | |
10| 10 | a1 | 5 | | |
----------------------------------------
For ex: Individual duplicate B column- In B column "a1" - 5 duplicate values totally,
check the c column i need the output like that
You should be using this formula in Column C
=COUNTIF($B$1:$B1,B1)
Let me know if it does not work.
You want a cumulative sum of the number of occurences of the value in column B. You can do that by inserting the following formula in C2:
=COUNTIF("$A$2:A2; A2)
You then drag in vertically, as far as you like. The result should be something like this:
| "C"
2 | =COUNTIF("$A$2:A2; A2)
3 | =COUNTIF("$A$2:A3; A3)
4 | =COUNTIF("$A$2:A4; A4)
And so on, and so on...
In column C kindly enter below formula.
=COUNTIF($C$1:C1,C1)
And drag it to last cell c10
Regards
Lalit.M

values of new table changing dynamically with the input of the initial table

I have a question in Excel and need your help!
I can do this if it was static problem but I need my end result to adjust to my input in the table because the year sometimes the year finishes sooner or later or is different or the number of activities vary.
Initial table (It always go in chronological order and it only has 1 or nothing. (I put 0 there because I wanted to put space and didn't know how to do it. also Number of activities may vary)
+----------------+------+------+------+------+------+------+
| year | 2016 | 2016 | 2016 | 2017 | 2017 | 2017 |
+----------------+------+------+------+------+------+------+
| month calendar | 10 | 11 | 12 | 1 | 2 | 3 |
| month project | 1 | 2 | 3 | 4 | 5 | 6 |
| Activity 1 | 1 | 1 | 0 | 0 | 0 | 0 |
| Activity 2 | 0 | 0 | 1 | 1 | 1 | 1 |
| Activity 3 | 0 | 0 | 0 | 1 | 1 | 0 |
| Activity 4 | 0 | 1 | 1 | 0 | 0 | 0 |
| Activity 5 | 1 | 1 | 1 | 1 | 1 | 1 |
+----------------+------+------+------+------+------+------+
I want in another sheet
+---------------+------------+------------+------------+------------+
| Activity year | 2016 | | | |
| | | | | |
| Activity 1 | Activity 2 | Activity 3 | Activity 4 | Activity 5 |
| 25,0% | 12,5% | 0,0% | 25,0% | 37,5% |
| | | | | |
| Activity year | 2017 | | | |
| | | | | |
| Activity 1 | Activity 2 | Activity 3 | Activity 4 | Activity 5 |
| 0,0% | 37,5% | 25,0% | 0,0% | 37,5% |
+---------------+------------+------------+------------+------------+
Now imagine that in the "another sheet" I have nothing and I want the result to adjust to the initial table. How can I do this?
Sorry for bad editing but I can't do better.
Any help is good thank you, I answer any question you might have.
I'm going to add something that is related to this and I also need. I need a formula to get the number of different activities per year that happen at least once for my calculations later. In this case it would be a formula for 2016 which the result is 4 and 2017 is 3.

Transform values without VBA but with Index and Match

I'm trying to find a solution without macros in excel for following problem:
There is a table containing ratings of a student for different time periods.
So the rating of the student with ID=1 was 1 from January to April and 3 from Mai to June.
Two other students had a constant ranking (6 and 9) from January to June
| A | B | C |D |
---| ----|------------|------------|-------|
1 | ID | START | END |RANKING|
2 | 1 | 01.01.2014 | 30.04.2014 | 1 |
3 | 1 | 01.05.2014 | 30.06.2014 | 3 |
4 | 2 | 01.01.2014 | 30.06.2014 | 6 |
5 | 3 | 01.01.2014 | 30.06.2014 | 9 |
Next table contains IDs (y axis) and Months (x axis)
| F | G | H | I | J | K | L |
---| ----|--------|--------|--------|--------|--------|--------|
1 | ID | 201401 | 201402 | 201403 | 201404 | 201405 | 201406 |
2 | 1 | | | | | | |
3 | 2 | | | | | | |
4 | 3 | | | | | | |
And I wish to feel this second table like this:
| ID | 201401 | 201402 | 201403 | 201404 | 201405 | 201406 |
| ----|--------|--------|--------|--------|--------|--------|
| 1 | 1 | 1 | 1 | 1 | 3 | 3 |
| 2 | 6 | 6 | 6 | 6 | 6 | 6 |
| 3 | 9 | 9 | 9 | 9 | 9 | 9 |
I tried to use Index and Match, but without any good results because I haven't found a posibility to use IF (if (
Could anybody help?
You can get what you're looking for with SUMPRODUCT
Given the layout you provided, this formula should work when put in G2 and filled down and over
=SUMPRODUCT(--($A:$A=$F2),--($B:$B<=G$1),--($C:$C>G$1),$D:$D)
That looks in column A for an ID matching F2, then for every one it finds of those:
It checks the date in column B against the date in G1
It checks the date in column C against the date in G1
If all criteria match, it returns the value in Column D
This assumes you only have one entry for each period, otherwise it will sum them.
Also, you can use SUMIFS, it's a little less easy to read but I think it's slightly more efficient than SUMPRODUCT (I'm not positive, just anecdotal evidence from usage)
=SUMIFS($D:$D,$A:$A,"="&$F3,$B:$B,"<="&G$1,$C:$C,">"&G$1)
It does the exact same thing, just with different syntax.

Resources