Perhaps try this set-up which seems to work ..
In Sheet1
-------------
Assume the table is in cols A to C,
Dates in col A, other fields in cols B to C,
data from row2 down, viz.:
Date Field1 Field2
01-Mar-04 Data1 Data1
05-Mar-04 Data2 Data2
05-Apr-04 Data3 Data3
07-Apr-04 Data4 Data4
07-May-04 Data5 Data5
etc
Empty cols are assumed to the right of col C
Put in Q1: =COLUMN(A1)
Copy Q1 across to AB1
(Just a quick way of putting
the numbers: 1,2,3 ... 12 into Q1:AB1)
Put in D2: =IF($A2="","",IF(MONTH($A2)=Q$1,ROW(),""))
Copy D2 across to O2, then fill down by a safe max
number of rows in which data is expected in cols A to C,
say down to O1000.
In Sheet2
-------------
Let's reserve cell A1 for input of the month# desired
(i.e.: 1 = Jan, 2 = Feb, ... 12 = Dec)
Put the same col headers in A2:C2, viz:
"Date Field1 Field2"
Put in A3:
=IF(ISERROR(MATCH(SMALL(INDIRECT("Sheet1!$"&CHAR($A$1+67)&":$"&CHAR($A$1+67)
),ROW(A1)),INDIRECT("Sheet1!$"&CHAR($A$1+67)&":$"&CHAR($A$1+67)),0)),"",OFFS
ET(Sheet1!$A$1,MATCH(SMALL(INDIRECT("Sheet1!$"&CHAR($A$1+67)&":$"&CHAR($A$1+
67)),ROW(A1)),INDIRECT("Sheet1!$"&CHAR($A$1+67)&":$"&CHAR($A$1+67)),0)-1,COL
UMN(A1)-1))
Copy A3 across to C3, then fill down by as many rows
as was done in Sheet1's cols D to O, i.e. down to C1000
Cols A to C (in row3 down) will return
all the corresponding rows from Sheet1's cols A to C
according to the month# which is input in A1
For e.g., for the sample data-set above,
inputting in A1: 4 will retrieve and
display all the rows with April dates from Sheet1
in row2 down:
Date Field1 Field2
05-Apr-04 Data3 Data3
07-Apr-04 Data4 Data4