Aug 23 2022 04:22 AM - edited Aug 23 2022 04:25 AM
Windows 10 – 64 bit
MS Office 2010 – Version: 14.0.7268.5000 (32-bit)
I am looking for a workaround for the FILTER and SORT functions on 365 so that I can have comparable features in the outdated Excel 2010 my workplace still has.
I want selected data extracted from a master sheet into three separate sheets based on certain conditions that will automatically update when the master sheet is updated and sorted into an order if possible.
I want selected data from each row extracted from the ‘MASTER’ sheet for each area (Column I of MASTER sheet) into their own respective sheets, however only if Column A from the MASTER sheet (Active) = “Y”.
If possible for each area’s sheet to then be sorted from high>low priority as defined by column B in the MASTER sheet.
Master pt1
Master pt2
Columns wanted for each area
Aug 23 2022 05:00 AM
Sub area()
Dim i As Long
Dim k As Long
Dim l As Long
Dim ws As Worksheet
l = Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To l
If Cells(i, 1).Value = "Y" Then
k = Worksheets(Cells(i, 9).Value).Range("A" & Rows.Count).End(xlUp).Row
Range(Cells(i, 1), Cells(i, 18)).Copy Destination:=Worksheets(Cells(i, 9).Value).Cells(k + 1, 1)
Else
End If
Next i
For Each ws In Worksheets
ws.Range("A:R").Sort key1:=ws.Range("B1"), order1:=xlAscending, Header:=xlYes
Next
End Sub
Maybe with this code. In the attached file you can click the cutton in cell T2 to run the macro. I've entered random numbers in columns C-H and J-R for this example.
Aug 23 2022 06:51 AM - edited Aug 23 2022 06:52 AM
Without dynamic arrays, one of the go-tos is INDEX with a nested SMALL-IF array to determine row positions to pick through relevant rows from the top-down. It's not recommended for large data sets because the formula would have to be applied to cells in anticipation of data maybe being returned. Sorting on top of this using an array might be theoretically possible but one might expect many computers to sound like a cement mixer trying to perform the calculation. Not recommended in 2010.
Here's an example of the INDEX-SMALL array (Ctrl+Shift+Enter to define formula as an array):
=IFERROR(INDEX(A$1:A$11,SMALL(IF(Active="Y",ROW(Active)),ROW(A1)),1),"")