Continuous numbering with blanks - multiple worksheets - excel

In Sheet1 I have 50 cells for numbering (column B) and my formula is
=IF(ISTEXT(C9),B8+1,"").
There will always be 50 rows and some could remain blank if there is no text in column C.
I would like to continue numbering on Sheet3, all the way through sheet20. So, if Sheet1 actually ends on number 10, I would like sheet3 to continue to number at 11, and if sheet 3 ends on number 20, I would like sheet4 to continue to number at 21, etc.
I have tried multiple formulas, but am having difficulty because there are blanks. Your help is much appreciated!

Use "MAX" to get the higher number, and use "INDIRECT" to look at the last sheet. So assuming you're using default names on the sheets, start by getting the current sheet name:
A1=REPLACE(CELL("filename"),1,FIND("]",CELL("filename")),"")
Then get the sheet #.
A2=RIGHT(A1,LEN(A1)-5)*1
Multiplying by 1 gives you the number instead of the text. Now we can get the previous sheet name:
A3="Sheet"&A2-1
Now use Indirect to get the highest value in column C on the previous sheet:
A4=MAX(INDIRECT(A3&"!C:C"))
If we combine it, we get:
=MAX(INDIRECT("Sheet"&RIGHT(REPLACE(CELL("filename"),1,FIND("]",CELL("filename")),""),LEN(REPLACE(CELL("filename"),1,FIND("]",CELL("filename")),""))-5)*1-1&"!C:C"))
As long as your data starts in Row 2 (i.e. you have headers), here is the full formula as well:
=IF(ISTEXT(C2),IF(OR(ROW()=2,IF(ROW()=2,TRUE,MAX(INDIRECT("B2:B"&ROW()-1))=0)),MAX(INDIRECT("Sheet"&RIGHT(REPLACE(CELL("filename"),1,FIND("]",CELL("filename")),""),LEN(REPLACE(CELL("filename"),1,FIND("]",CELL("filename")),""))-5)*1-1&"!C:C"))+1,MAX(INDIRECT("B2:B"&ROW()-1))+1),"")

One way would be to put: =IF(ISTEXT(C4),COUNT(Sheet1!B4:B13)+1,"") in first cell of Sheet2, and then reuse =IF(ISTEXT(C5),B4+1,"") in all cells below.
If you would like to have all the cells with the same formula, you could move that COUNT to a hidden row just above the first one of your data.
Then you do the same thing with next sheet, just changing the naming.

Related

Sorting multiple sheets into 1 line and having each line display on a results page

looking for some help speeding up sorting pages on a spreadsheet.
Currently we have 4 sheets absolutely packed with UK postcodes/zip codes.
At the moment we go into each sheet and sort the entire sheet to show the information for the specific postcode we enter. (Always returns one line of info each sheet)
Is it possible to just have a separate sheet where we enter the postcode it it finds the match from each sheet and displays 1 line from all 4 sheets? Hopefully that makes sense.
A idiot's guide tutorial would be great
So, let's say we have four sheets (sheet1, sheet2, sheet3 and sheet4). They all look like this:
Create your 5th sheet. Here, I'm calling it "lookup_here". You should look up how to use vlookup formulas as I'll fail to completely explain it here for lack of time. Basically, you are :
Looking up a value (such as 5F3322 postal code) in a table array
(such as sheet1 columns A, B, C and D.... keeping in mind that your
lookup value must be in the first column of the array)
Then returning the column index (like column B is 2, column C is 3, etc).
And finally stating if you want an exact match (false) or approximate
match (true). Almost always use false.
Here is what the final output would look like, and I'll put some sample formulas below the picture.
So, you'll input your postal code value in cell B1. Then you will have formulas in B3 through D6. It will take some time to build these.
B3 Formula: =VLOOKUP($B$1,Sheet1!$A:$D,2,FALSE)
B4 Formula: =VLOOKUP($B$1,Sheet2!$A:$D,2,FALSE)
B5 Formula: =VLOOKUP($B$1,Sheet3!$A:$D,2,FALSE)
B6 Formula: =VLOOKUP($B$1,Sheet4!$A:$D,2,FALSE)
Column C formulas are similar, but the 2 before false will be a 3.
Column D formulas are similar, but the 2 before false will be a 4.

How to compare each cell with each other in MS Excel?

In large dataset - 250 rows and 1000 columns I need to compare each value in cell with each other in one column and iterate over all column. Heres simplified example of source data:
And this is what I need (formatting not necessary and 2 empty rows not necessary) - if match if found "1" is produced, if no match "2" is produced, if one or both were N/A - "3" is produced:
Comparison should only be "one sided" for example Terry and Joey is the same as Joey and Terry, thus further comparison of already compared pairs is not needed.
Is it possible to do this in Excel 2016 or are there better tools for this?
My thanks to all.
This alternative is a bit complex, but we all solve problems like this differently. If it helps you, please feel free to use it. If not, I can understand since some of these techniques are not particularly common and the resulting formula is a bit unreadable. I did it this way so that I would be able to organize the rows better and read the matching/unmatching indicators more easily. I started by creating a helper column rather than repeat the rows for each individual so that each row shows the two names being compared. This is the formula I used to compare using B8's information is:
=IF(OR(INDIRECT("R"&MATCH($I8,$A$1:$A$6,0)&"C"&COLUMN(),FALSE)="N/A",INDIRECT("R"&MATCH($A8,$A$1:$A$6,0)&"C"&COLUMN(),FALSE)="N/A"),3,IF(INDIRECT("R"&MATCH($I8,$A$1:$A$6,0)&"C"&COLUMN(),FALSE)<>INDIRECT("R"&MATCH($A8,$A$1:$A$6,0)&"C"&COLUMN(),FALSE),2,1))
I am going to try to explain the formula I used as follows:
Without using the helper column, the basic formula for cell B8 is this:
=IF(OR(B$2="N/A",B3="N/A"),3,IF(B$2<>B3,2,1))
and this would work for the range B8:H11. However, when I skip down to B13, the formula would need to change to:
=IF(OR(B$3="N/A",B4="N/A"),3,IF(B$3<>B4,2,1))
and this would work for the range B13:H15. Likewise B17, and B20 would be:
=IF(OR(B$4="N/A",B5="N/A"),3,IF(B$4<>B5,2,1))
=IF(OR(B$5="N/A",B6="N/A"),3,IF(B$5<>B6,2,1))
for their respective ranges. I shy away from formulas where I have to remember what I need to change for each section (heaven forbid I should write any notes or read them if I did).
In order to do this, I used the person column (A) and my helper column (I) to determine which rows to compare.
MATCH($I8,$A$1:$A$6,0)
gives the row of the person value in the Chart from A1:H6 in the comparison
MATCH($A8,$A$1:$A$6,0)
gives the row of the helper value in the Chart from A1:H6 in the comparison
Since the data being compared is always in the same column, I just use COLUMN() to determine which column to use.
In cell B8, MATCH($I8,$A$1:$A$6,0) will tell me it is row 2 and MATCH($A8,$A$1:$A$6,0) will tell me it is row 3. Thus, I want to use the values in Row 2, Column 2 compared against Row 3, Column 2.
To tell Excel to compare Row 2, Column 2 against Row 3, Column 2 is fairly simple, but creating a formula that you can copy from cell to cell without having to modify it each time is not as easy, since each section is a bit different and there could be blank rows in between sections. What I did was to use indirect cell notation using "R1C1" syntax rather than the more common "A1" cell referencing.
In other words in column B8 this:
INDIRECT("R"&MATCH($I8,$A$1:$A$6,0)&"C"&COLUMN(),FALSE)
gives the value in Row 2 (for Terry), Column 2 and
INDIRECT("R"&MATCH($A8,$A$1:$A$6,0)&"C"&COLUMN(),FALSE)
gives the value in Row 3 (for Joey), Column 2 and
In both of the above, I am concatenating and R and a C to the numbers returned by the MATCH() and COLUMN() functions and using the FALSE parameter to tell Excel to treat the concatenated result as "R1C1" notation. In other words, this:
OR(INDIRECT("R"&MATCH($I8,$A$1:$A$6,0)&"C"&COLUMN(),FALSE)="N/A",INDIRECT("R"&MATCH($A8,$A$1:$A$6,0)&"C"&COLUMN(),FALSE)="N/A")
translates to this:
OR(R2C2="N/A",R3C2="N/A")
I realize that the helper column is a burden you did not ask for and I realize that the formula is overly complicated, but I can freely copy this formula to any column that has the two names and it will do a comparison for that day of the week.
Here is a picture of what I am describing:
Added comments
Just to carry the above a bit further, suppose you had a Sheet1 which had the rows of data to be compared and suppose this were limited to 250 rows with the same 7 columns (rather than 1000). I could create another sheet similar to the above along with another helper cell (I put it in A1) to automatically populate the person column and the helper column like this:
New Helper Cell value: 1 (essentially saying to start at the top). This would populate Cell A2 with the following formula:
=IFERROR(IF(INDEX(Sheet1!$A$1:$A$250,NUMBERVALUE(RIGHT($A$1,3)+ROW()))=0,"",INDEX(Sheet1!$A$1:$A$250,NUMBERVALUE(RIGHT($A$1,3)+ROW()))),"")
Basically this is just this formula:
=INDEX(Sheet1!$A$1:$A$250,NUMBERVALUE(RIGHT($A$1,3)+ROW()))
but is checking first to see if it results in zero and then is replacing it with blanks if it is an error. Copying this cell down Column A will populate that column with the names starting at the first row after the data row specified by A. If you have more headings or other data you would need to add additional amountst to the +ROW() portion in both occurrences in the formula. Column I gets populated siimilarly with this:
=IF(A2="","",INDEX(Sheet1!$A$1:$A$250,NUMBERVALUE(LEFT($A$1,3)+1)))
However, this value does not vary from row to row.
Now that the helper columns are populated, you can populate the formula a bit differently from the above (which had used the same sheet) for example in B2:
=IF($A2="","",IF(OR(INDIRECT("Sheet1!R"&MATCH($I2,Sheet1!$A$1:$A$250,0)&"C"&COLUMN(),FALSE)="N/A",INDIRECT("Sheet1!R"&MATCH($A2,Sheet1!$A$1:$A$250,0)&"C"&COLUMN(),FALSE)="N/A"),3,IF(INDIRECT("Sheet1!R"&MATCH($I2,Sheet1!$A$1:$A$250,0)&"C"&COLUMN(),FALSE)<>INDIRECT("Sheet1!R"&MATCH($A2,Sheet1!$A$1:$A$250,0)&"C"&COLUMN(),FALSE),2,1)))
The main difference from the first formula is the off sheet references to "Sheet1" that were added and the extension of the formula to cover 250 rows.
Here is a picture with Cell A1 set to 1:
Here is a picture with Cell A1 set to 3:
Using this, your Sheet1 values remain where they are and you can create a generic comparison sheet to compare the values of various rows of Sheet1. These can be dynamically built by changing the value in A1 or you can create dozens of similar sheets, each differing by the value in A1.
Not sure if any of this makes sense.
Good Luck
Just use a function like this(exemple for cell B4):
=IF(B3=B2;1;IF(B3="N/A";3;2))
Print of it working
Do it for each line and just drag it from the begining to the end.
EDIT: You should do an or in the 2nd if to make surre neither is "N/A"
=IF(OR(B3="N/A";B2="N/A";3;IF(B3=B2);1;2))

How do I compare rows across sheets in Excel?

I've read through some of the topics that were similar to mine but I couldn't find an answer for what I need. Perhaps it is a logic problem on my part.
I have two sheets with identical data however they come from two different sources. I need to compare rows from 1 sheet to rows of the 2nd sheet to find out what is missing or different so I can fix.
I have columns A - M which has the data points. I then have column N which I concatenated all the columns together and compared them to other sheet doing the same thing so I could find the Non-matching. Out of 40,000 records I have 6100 that do not match.
What I am trying to do is compare the whole row (or the concatenated) and find out what value is different between the two. I was attempting to do this by IF with a VLookup and nested IFs but this didn't turn out correct because I wasn't getting it to compare the same value from the same Row plus I ran out of allotted nesting space. I was thinking a match,index system might work. I need some help!
Edit:
To be more clear the rows do not line up. What I have to do is make sure all the rows from sheet "1" are in sheet "2" but not all of sheet "2" need to be in "1". Basically I need this -
From sheet "1" find the value in cell A1 in sheet "2" A:A. Then match B1-N1 to that same row (whatever row it is). If possible I'd like to identify either by highlighting or having a word such as "Mismatch"
I usually create a new sheet and in use each cell to do a cell by cell comparison across the sheets. i.e. in new sheet cell a1 put =value(Sheet1!A1=Sheet2!A1) That give you a 1 where they're the same and a zero where they differ.
If you want you can set the column n on an original sheet to be the sum of the same row on the new sheet for easy reference.
I would use a VBA solution. If the number of rows are the same for each sheet and you are comparing row 1 with row 1, etc. then:
1) Loop through each row and concatenate the rows' cells for each sheet.
2) Apply the clean and trim function to the results.
3) Compare the results.
4) If they match, move to the next row.
5) If they don't match, loop through each cell of the row range to find the ones that differ and capture it somehow.
6) Print the results somewhere.
OR
Put the range values of each sheet into two arrays and compare the arrays (faster).
I'm certain there's a better way but that would be my approach, at least.

In excel, copy separated rows into sequential rows

Challenge: In excel, on sheet 1, every 13th row contains results from the preceding 12 rows. I would like to dynamically copy the results from each 13th row of Sheet 1 to Sheet 2, Rows 1,2,3…, preferably without VBA. Any suggestions?
As long as your sheets are named Sheet1, Sheet2, etc, you could use something like this in Cell A1 of sheet2 and then copy and paste down:-
=INDIRECT("Sheet1!A"&ROW()*13)
This would give you the value of every 13th row of sheet 1.
Don't use INDIRECT. It is volatile and slow.
Don't use ROW. It is susceptible to errors from row deletions and other problems.
Instead use INDEX and ROWS:
=INDEX(Sheet1!A:A,ROWS($1:1)*13)

How do I automatically update cells to match values from another sheet when one cell is changed using data validation?

I have a list of items on Sheet 1 with the names of each item in column A and then further information in the subsequent 5 columns.
On Sheet 2, in each of the cells of column A, I have set it so that I can pick any item from a dropdown list using data validation. I want the subsequent cells in the row to automatically assume the value of the respective cells in Sheet 1.
So if in Sheet 2, Cell A1 I select Item 3 (which is in Cell A3 on Sheet one), I want Cell B1 on Sheet 2 to have the same value as Cell B3 on Sheet 1.
I could get the result I wanted by using =IF($A3='Sheet1'!A3,'Sheet1'!B3,) and then adding each possible item but that seems really long winded and would require adding to the formula every time I added an item.
Any idea if there is a way of doing this? Sorry if my explanation is a bit confusing. My excel knowledge is not great!!
Thanks in advance
Use the Vlookup function
Next to your data validation cell, enter (assuming the first sheet called Sheet1):
=Vlookup(a1,Sheet1!a:f,2,0)
This will return the data that match for the 2nd column. For the 3rd use:
=Vlookup(a1,Sheet1!a:f,3,0)
And so on..

Resources