excel - count blanks per row filtered on name - excel

Greeetings
I am trying to create a formula in excel for counting blank cells (that is the easy part ;))
But I would like to find the number of blank cells per Name in RowA.
Sheet1
A B
1 *Name* *Data*
2 Brian data1
3 Niels data1
4 Kurt data2
5 Kurt
6 Brian data3
7 Brian
8 Niels data2
Should result in:
Sheet2
A B
1 Name Percent Empty Cells
2 Brian 50%
3 Niels 0%
4 Kurt 50%
since 50 percent of Brians fields are empty.
since 50 percent of Kurts fields are empty.
Anyone?

To count the empty cells, assuming that F2 is the name value you want to look up:
=COUNTIFS(A:A,F2,B:B,"")
To get the percentage of empty cells:
=COUNTIFS(A:A,F2,B:B,"")/COUNTIF(A:A,F2)

Related

Excel Combining Countif and Vlookup

Table 1 (input):
Name
Value
Bob
0.5
John
1.2
Bob
0.3
John
0.1
Jane
3
Table 2 (expected output):
Name
>=0 & <1 Count
Bob
2
John
1
Jane
0
I'm looking to count the names in Table2 (column A) every instance in which the name appears in Table1 but only if their value columns in Table1 is between 0 and 1.
I'm assuming I have to combine VLOOKUP with COUNTIFS but I am not sure.. Nothing works..
NOTE: PivotTables are not an option, Table2 column B must have the right formula to count these instances with the two criteria applied. Likely ">="&0 and "<="&1 should be present in the formula.
Thank you for your help!
Just COUNTIFS:
=COUNTIFS(A:A,D2,B:B,">=0",B:B,"<1")

How to SELECT N values ABOVE and BELOW from specific value

If I have a table:
Column A
Column B
Column C
1
Jane
10
2
Stewe
9
3
John
8
4
Mike
7
5
Luke
6
6
Andrew
5
7
Carl
4
8
Sasha
3
9
Ariel
2
10
Carol
1
I would like to SELECT 3 rows above and below WHERE Column B = someValue .
IF query SELECT * WHERE Column B = "Andrew" result should look like:
Column A
Column B
Column C
3
John
8
4
Mike
7
5
Luke
6
6
Andrew
5
7
Carl
4
8
Sasha
3
9
Ariel
2
I know how to select one row, but cant understand how to select such range.
Thanks for ideas!
You can limit and offset inside your QUERY():
=QUERY(A1:C,"limit "&2+MIN(5,MATCH(D1,B:B,0))&" offset "&MAX(0,MATCH(D1,B:B,0)-5))
Well, this was fun...
If 3 above or below are not available then blank... rolling data around is a different proposition.
Below the image is the list of formulae used.
So, per cell not including the data validation that is based on cells B2:B11
A14 and dragged down:
=IFERROR(INDEX($A$2:$A$11,MATCH(B14,$B$2:$B$11,0)),"")
C14 and dragged down:
=IFERROR(INDEX($C$2:$C$11,MATCH(B14,$B$2:$B$11,0)),"")
Cells B14 through B20:
=IFERROR(IF(MATCH(B$17,$B$2:$B$11,0)=3,NA(),INDEX($B$2:$B$11,MATCH(B$17,$B$2:$B$11,0)-3)),"")
=IFERROR(IF(MATCH(B$17,$B$2:$B$11,0)=2,NA(),INDEX($B$2:$B$11,MATCH(B$17,$B$2:$B$11,0)-2)),"")
=IFERROR(IF(MATCH(B$17,$B$2:$B$11,0)=1,NA(),INDEX($B$2:$B$11,MATCH(B$17,$B$2:$B$11,0)-1)),"")
=E2
=IFERROR(INDEX($B$2:$B$11,MATCH(B$17,$B$2:$B$11,0)+1),"")
=IFERROR(INDEX($B$2:$B$11,MATCH(B$17,$B$2:$B$11,0)+2),"")
=IFERROR(INDEX($B$2:$B$11,MATCH(B$17,$B$2:$B$11,0)+3),"")
In Excel 365, you could try:
=INDEX(A:C,MAX(2,MATCH(D2,B:B,0)-3),0):INDEX(A:C,MIN(COUNTA(B:B),MATCH(D2,B:B,0)+3),0)
In Google sheets, on the other hand, the formula would be:
=INDEX(A:C,MAX(2,MATCH(D2,B:B,0)-3),0):INDEX(A:C,MIN(COUNTA(B:B),MATCH(D2,B:B,0)+3),0)
(spot the difference).
Excel
Google Sheets
This should produce what you want in all cases:
=IFERROR(FILTER(A2:C,B2:B<>"",ROW(A2:A)>=VLOOKUP("Andrew",{B2:B,ROW(B2:B)},2,FALSE)-3,ROW(A2:A)<=VLOOKUP("Andrew",{B2:B,ROW(B2:B)},2,FALSE)+3))
Of course, you can replace the two instances of "Andrew" with a cell reference (one where you type a changeable name).
This just looks up the row in a curly-bracket array formed from the names and row numbers and uses FILTER to keep results to rows between +/-3 rows of where the target name is found. If you choose the first name (or any other name), you won't get an error; because even if the target name were on Row 1 and the formula goes looking for anything "greater than or equal to 1 minus 3, all rows will be greater than a negative number. Same on the high end. You just won't get a full seven names if there aren't at least three other rows prior to or after the target row.
this not the best solution but it will work , you can use a helper column 'D' that contains the following formula =if(countif(INDIRECT("B"&ROW()+3&":"&"B"&ROW()-3),"Andrew")>0,TRUE,FASLE)
and u can query from here like this SELECT * WHERE Column D = TRUE

In excel, how can I split value in a cell and apply vlookup formula for each split value?

I have been struggling to find an answer for several hours and I am sort of giving up. Here is what I am doing in excel.
For each number (1 through 4) , I am assigning a code and a corresponding Score.
I am inputting this data starting from first row (A1 through C4)
Number Code Score
1 A 2
2 B 4
3 C 6
4 D 8
Input: Now, each person gets a number every week and my data is like this
Person Week1 Week2
Person1 3 (A10 is the cell) 4 (A11 is the cell)
My output: I am using vlookup to find the value for each week and get a score.
Person Week1 Week2
Person1 6 8
So to get 6, I am using the formula:
=VLOOKUP(A10,Complexity!A1:C4,3)
To get 8, I am using the formula:
=VLOOKUP(A11,Complexity!A1:C4,3)
So far so good. My problem is that , some week might have 2 values.
Example:
Person Week1
Person1 3,4 (A10 is the cell)
I am expecting the output score:
Person Week1
Person1 14
How can I split the values in the cell and apply vlookup formula for each time so i can get a total of 6 + 8
For A11, and assuming that any separator within that cell, if present, is only ever a single comma (no space), as in your examples:
=SUMPRODUCT(0+(ISNUMBER(FIND(","&Complexity!A$1:A$4&",",","&A11&","))),Complexity!C$1:C$4)
Copy down to give similar results for entries in A12, A13, etc. (though note that I made the reference to the Complexity sheet in the above absolute with respect to rows).
Regards

Numbering/sequencing sets of same column values

How to do numbering/sequencing for sets of same column values? For example:
Col1 Col2
Andy 1
Chad 1
Bill 1
Andy 2
Bill 2
Bill 3
Chad 2
Bill 4
Since Andy got 2 values, I want to number it 1 and 2 in Column 2. For Bill, I want to number it 1, 2, 3 and 4 and so on.
You can accomplish this with countif and a sliding range :
A B
1 val1 =COUNTIF($A$1:A1, A1)
2 valx =COUNTIF($A$1:A2, A2)
and so on.
The formula in column B can be dragged down / autofilled in the column. It anchors to the start of the range and only looks as far down as the value we are numbering; COUNTIF is tallying up the matching values in the preceding set this way.
That is kind of slow when your list is really long. I've found sorting the column A to Z or small to larger and then using this formula is much faster:
=IF(A2=A1, A1+1,1)
Basically
if the value above is the same then add one to the count else start over at 1

How to compare 2 cells to another 2 cells in a different sheet in excel?

I want to know how to compare or know the difference of 2 cells to another 2 cells in a different sheet in excel 2007
Example:
Sheet 1
A B
1 101 KIWI
2 102 APPLE
3 103 BANANA
Sheet 2
A B
1 101 KIWI
2 102 APPLE
3 103 ORANGE
I want to show the there is a difference in 3rd row on Sheet 1 and 2
Thanks
If you put =A1&B1 in C1 of each sheet and copy down then it is like comparing single columns. So with, in D1:
in Sheet1: =MATCH(C1,Sheet2!C:C,0)
in Sheet2: =MATCH(C1,Sheet1!C:C,0)
copied down in each case the resulting numbers should show the row number where the match is on the 'other sheet' (the lists need not be sorted) and otherwise #N/A for where matches have not been found.
There is obviously no need for the concatenation for the example provided, since the two 'A' columns are identical, but I take it that was because the example was simplified.

Resources