Return the column of a cell - excel

Given a cell, I'm looking for a function and formula solution which returns its column. For instance,
Given Cell G3, I expect the formula to return Column G:G (rather than the string G:G and the column number 7)
Given Cell H8, I expect the formula to return Column H:H (rather than the string H:H and the column number 8)
Such a solution does not seem to exist in Excel today. Could anyone help?
PS: Given a Cell B3, I'm looking for a formula to return the result like what is displayed in Column I.

How about =SUBSTITUTE(INDEX(A:D,,COLUMN(B3)),"","") which will return blank if blank and 0 if value 0 in the referenced column.
I also only referenced the first 4 columns, since your search/example data starts from column 5. Excel would then always reference up untill the last row regardless the version.

Related

Excel formula match value in column A and return not blank cell column B

Need some help with creating a formula.
In column A I have text like "EAJ, ECJ, EDJ...", in column B there is text which I need to return, in this case "C1". However when I using vlookup of index/match getting blank cell by obvious reasons.
Is there any way to build a formula which will match text in column A and will return first not empty cell above in column B? For example if match text is in A322 then return value will be B318, because cells in range B322 up to B319 are blank.
Index/Match
You need to locate the last text in column B down to the row you locate ECJ in.
=INDEX(B:B, MATCH("zzz", B$1:INDEX(B:B, MATCH("ECJ", A:A, 0))))
Substitute "ECJ" for a cell on the worksheet cotaining ECJ or any other value to be matched in column A.

Check if text exist in rest of Column, and if so, use info from that row it is in

I'm after a way to a cell to check another cell that I'm inputting text into, and for it to see if that text value is the same anywhere else in the column, and if so, it grabs the number value which is in the same column as itself but in the row of the text that checked for.
So if you use picture, you can see I've currently got E7 selected. I'm wanting it to check the "GOLF COURSE" column for any other row that contains the same text it has in it's own row. For this it's "Course1". I'd like it to check through the rest of column B if there are any matches for "Course1" which there is in B3. If it matches I'm wanting it to then use the value that's in same column as it (E) but the same row as the matched text in column B. In this case I would want it to copy the value that is in E3.
If there wasn't a match (as it's a new course lets say) then I need to be able to just click on the cell and input the numbers needed, which I would be able to do anyway but just throwing it in for sake of info.
I've tried all sorts of googling and thinking how I could possibly do it but it's too difficult for my amateur knowledge of Excel.
I believe you are looking for INDEX/MATCH:
=IF(COUNTIF($B:$B,$B7)>1,INDEX(E:E,MATCH($B7,$B:$B,0)),"New")
I added a COUNTIF check to ensure that the same course exists more than once in column B, without it, you would be getting a circular reference formula (which would also happen with the above formula if the same course appears more than once, but you use this formula on the first occurrence of that course, so make sure do not use it the first time you fill out the PAR scores for a particular course).
Merged Cells Messing With INDEX/MATCH
The Formula
Copy the following formula into cell E7:
=IF(AND($B7<>"",$D7="Par"),IF(ISERROR(MATCH($B7,$B$3:$B5,0)),"Par",INDEX(E$3:E5,MATCH($B7,$B$3:$B5,0))),IF(AND($B6<>"",$D7="Strokes"),IF(ISERROR(MATCH($B6,$B$3:$B4,0)),"Strokes",INDEX(E$3:E4,MATCH($B6,$B$3:$B4,0)+1)),""))
Image
How
We are creating the formula in cell E7.
MATCH
Syntax: MATCH(lookup_value,lookup_array,match_type)
We will use MATCH to find the position of COURSE1 in the above
cells of column B.
The 1st argument is lookup_value which will be the cell in the same
row of our row (7) in column B: B7 where we will lock only the
column (we will not be searching in other columns): $B7.
The 2nd argument lookup_array will be a range. The first cell will be
cell B3 whose row and column we'll lock, because we will always
start the search from this cell in every other cell to the left or
below: $B$3. The last cell will be B5 where we will lock only the
column: $B5.
And finally we will use 0 as the parameter of the 3rd argument
match_type to find an exact match.
Now were ready to write our MATCH formula:
=MATCH($B7,$B$3:$B5,0)
Which will return 1 i.e. an exact (0) match of B7 was found
in the 1st cell of range B3:B5.
We don't want 1 (E3), but the value in the cell (5).
INDEX
The INDEX function has 2 syntaxes where we will use the 2nd:
Syntax 2: INDEX(reference,row_num,column_num,area_num)
Since were using a one-column range we can safely omit the arguments row_num and column_num, which leaves us with:
Modified Syntax: INDEX(reference,area_num)
The INDEX function used this way will return the area_num-th value
of reference i.e. in our case if area_num is 1 it will return the
1st value in our column range, if it is 2, then the 2nd, etc.
The 1st argument reference will be the same sized range of our
MATCH range in column E: $E$3:$E5 where we will remove the
column locks because we also want to return results for other
columns: E$3:E5.
The 2nd argument area_num will be our MATCH formula.
Our current formula looks like this:
=INDEX(E$3:E5,MATCH($B7,$B$3:$B5,0))
which will return the value of cell E3: 5.
Final Adjustments: IF, AND and ISERROR
That would have been almost (Error Checking) all if the cells in column B weren't merged. Therefore we have to use IF to determine if the row in which we're writing the formula contains either Par or Strokes and adjust our so far created formula for both conditions:
=IF($D7="Par",INDEX(E$3:E5,MATCH($B7,$B$3:$B5,0))
=IF($D7="Strokes",INDEX(E$3:E4,MATCH($B6,$B$3:$B4,0)+1)
=IF($D7="Par",INDEX(E$3:E5,MATCH($B7,$B$3:$B5,0)),$D7="Strokes",INDEX(E$3:E4,MATCH($B6,$B$3:$B4,0)+1))
and (3rd condition) check in column B if there is a value in the row where we're creating the formula for a row containing Par, or the row above for a row containing Strokes, using AND:
=IF(AND($B7<>"",$D7="Par"),INDEX(E$3:E5,MATCH($B7,$B$3:$B5,0)),IF(AND($B6<>"",$D7="Strokes"),INDEX(E$3:E4,MATCH($B6,$B$3:$B4,0)+1),""))
Finally we have to add some error checking, because if the match was not found the formula will produce and #N/A error:
=IF(AND($B7<>"",$D7="Par"),IF(ISERROR(MATCH($B7,$B$3:$B5,0)),"Par",INDEX(E$3:E5,MATCH($B7,$B$3:$B5,0))),IF(AND($B6<>"",$D7="Strokes"),IF(ISERROR(MATCH($B6,$B$3:$B4,0)),"Strokes",INDEX(E$3:E4,MATCH($B6,$B$3:$B4,0)+1)),""))
Now we are ready to copy the formula to the right and below as far as we need.

Return last value in a row - do not consider formula as value - Excel 2016

I want to find the last value of a row in a given range. Each cell in this row is populated via a formula. So, if hte formula succeeds, it has a value, otherwise it shows null.
This is the formula for every cell in the row
=SUM(J$36:J$45)
To find the last value in the row, at the end cell of the row, i have this formula =LOOKUP(2,1/(J47:T47<>""),J47:T47) for the range J47:T47.
This forumula works when every cell has a text or number. In my case, since every cell already had the formula, it considers formula also as not null and gives alway the value of the last cell(which in my case was null since sum was 0/null). What i want is to consider only the cells that really has a value - meaning the sum would have given some number. How do i tweak the formula to say value is not null or not formula

How to refer to multiple adjacent cells

I have a work sheet in which there are several cells with a specific entry - let's say "A". These are not all in the same rows/columns. After each cell is a date.
I need to count the number of cells containing "A" which also have a specific date in the cell immediately to its right. I've tried combinations of Countifs and Indirect, with no success. How can I achieve this?
This counts the number of times that there is A in column A and 1 in column B
=SUMPRODUCT(($A$1:$A$5="A")*($B$1:$B$5=1))
This outputs in cell D1
Not too difficult.
I have created a sample sheet with 8 rows and 5 columns of data.
See below, the formula in cell C12 counts the number of occurrences where the a cell with a date of October 31, 2017 is directly to the right of a cell that contains the text A.
If you want more info as to how this works, read on:
When searching for cells that contain A, you don't search in the last column of the data (in this case, column E) because it is impossible for a column to the right to have any date in it. This is why a portion of the formula says A1:D8="A" instead of A1:E8="A". This is the same reasoning why we start searching for a date in column B rather than column A in the formula.
You can achieve this with a helper row. Add additional row on top of your Worksheet. In cell "A1" enter formula below.
=COUNTIFS(A2:A2000,"A",B2:B2000,"YourDate")
Drag this formula to the rightmost of where you have data, then simply sum all values returned by formula.

Search a column of text by adjecent cell and return a binary value (excel)

What's a good way to search a column of text (e.g. A1:A10) by adjecent cell (e.g. B1) and return a binary value (e.g. 0 or 1) in the next column (e.g. C1:C10)?
my 'un-elegant' approach so far: use VLOOKUP, then filter and delete all fields that return an error.
A simple MATCH will do for you
=IF(ISNUMBER(MATCH("*"&B1&"*",A1:A10,0)),1,0)
if I understand your question correctly you are wanting column C to show 1 or 0 depending on whether text in column B appears in text in column A, if so:
formula in C2 to extend down =if(find(B2, A2) > 0, 1, 0)
FIND will return the location of the first occurrence of the first argument within the second
EDIT
Ok, if you want to check all of column A use this:
=OR(NOT(ISERROR(FIND(B1, A1:A8))))
Again its array formula so complete with CTRL+SHIFT+ENTER
So its doing a FIND for B1 against all of column A, any row that doesn't contain B1 is going to return an error. So now you have an array whose values are either ERROR or a number indicating B1 is found, you can then use the ISERROR function on each element of the array and then NOT each element, you will then have a TRUE for each row B1 appears in, then collapse it all to a single value using OR :) you can extend this formula in B1 down for the other rows but make sure to lock A1:A8 as in $A$1:$A$8

Resources