Excel using Index for large number of rows - vba

=INDEX(Analysis!F2:F99999, SMALL(IF($B$1=Analysis!$A$2:$A$99999,ROW(Analysis!A2:$A$99999)-ROW(Analysis!A2)+1),ROW(1:1)))
I am trying to use the formula above to find all rows with a specific phone number. The formula then returns the record specified to he sheet. This formula will not work with sheets that contain a lot of data does anyone know why and how can I fix the issue?

Related

Find first non-blank cell in column that meets criteria in another column

I've compiled multiple spreadsheets containing sporadic employee information, and I'm now trying to consolidate all of the information to remove duplicates and blanks. The formula below is my starting point, but if the first cell that meets that criteria is blank, it returns a blank. I want it to find the next cell that meets that criteria but has a value.
=INDEX(Working!C:C,MATCH($A3,Working!$B:$B,0))
Below is what the Working tab looks like, which contains the master list of data including blanks and duplicates. Working!C:C is the list of last names; $A3 is the Employee ID I'm hoping to retrieve data for, and Working!$B:$B is the list of Employee IDs. I'll be doing this for many columns, so to illustrate this, in the table example below I've shown that Column D is the phone number. Any help you can provide is appreciated!
Column B-------C-------D
---------287-----Doe----blank
---------287-----blank---333-333-3333
---------287-----Doe----blank
Use the following array formula:
=INDEX(Working!C$1:C$100,MATCH(1,($A3 = Working!$B$1:$B$100)*(Working!C$1:C$100<>""),0))
Being an array formula it needs to be confirmed with Ctrl-Shift-Enter instead of Enter when exiting edit mode. If done correctly then Excel will put {} around the formula.
Please note that with an array formula the references need to be the smallest range possible that covers the dataset.

How to copy selected columns and filter them before hand in excel VBA

I am just a beginner in VBA. I am trying to copy some data from one workbook that is updated daily to a master woorkbook and generate a report. I want it to first filter one of the columns for nonzero values and copy it with three selected columns for example columns T,C,N. I have looked everywhere for an answer but I haven't succeeded yet. Please help.
You can check if a given cell has value 0 by something like this If Sheets(sheetname).Cells(rownumber,columnnumber)=0 Then
You haven't specified what do you want to do on the other workbooks with the cells that were empty.

complex VBA to remove duplicates from multiple pages and then delete blank rows looping all sheets

I've spent hours on the internet trying to work something out but can not get a vba fix to work on a complex sheet like mine! Your help would be appreciated.
For all these queries I'd like to loop through all sheets, but skip the sheets named "timekeeper code", "bill date" & "summary" - these names will always be the same but I can not name the sheets. The script needs to loop as the names and quantity will vary.
On all other sheets it will loop I need to select the range "A1002:A2003" and if there is a duplicate delete the row.
I also need to do the same for range "A2005:A3006".
Please note that both of these ranges are with in tables but again the table names can't be named as they will vary.
I'm not sure if it helps but the full table range for A1002:A2003 is A1002:B2003
and the full table range for A2005:A3006 is A2005:AD3006
I can also not go from A1002 straight to A3006 as some values will be shown in both ranges but I will need them both
looping the same sheets,
I then need to delete all rows from A1001 upwards to the last used cell where the cell value is = ""
I have a very limited skill on VBA and quite a complex query so I'm basically stuck starting from scratch so any code you have to do this would be amazing!
I hope this makes sense.
Many thnaks
First google entry solves your problem:
Delete all duplicate rows Excel vba
now you have to generate a loop around this function to target the correct sheets.

Advanced data import from Excel sheet

currently I'm trying to import data from one excel sheet to another.
I'm going through the cells in 13 columns and if value in one of them exceeds X I need to copy this and 719 following rows into another excel sheet.
Does anyone have tips how to do so?
I'm not really into that but I'm trying to simplify work of my service engineers...
Thanks so much for your answers.
I found a solution:
Checking maximum value in a row
With function "delete row based on cell value" I'm deleting all rows where maximum value is smaller than desired
I'm transferring next 720 rows to another sheet with simple addressing
Not as perfect as I'd imagine but is working

VBA- Need help to do average rows if data present in the other columns

I have a excel sheet which we may keep adding rows/ deleting them.
And I have an average value present in some cell.I would want the excel formula to identify if there is text in another column to average the columns
So now if I insert another row, I have to manually update the average formula.
Is there a way to have a formula which check if column A is not empty, it should consider the data in column G for the average
There's a lot of approaches to this. My current favourite is a CELL:INDEX(...) expression. For instance, to find the last populated cell in the first continuously populated range between B1 and B5000, I would use (probably as a named range) $B$1:INDEX($B$1:$B$500,MATCH(TRUE, $B$1:$B$500="", 0)-1).
This approach is great because it's non volatile, so it shouldn't bog your worksheet down. It might be vulnerable to $B$500 gradually shrinking if you're only ever deleting rows, though. Alternatives are referencing the whole column ($C:$C), but that's usually dog slow in modern excel, or using OFFSET which never shrinks, but is volatile.