显示包含每人号码的第一个单元格的相应日期

时间:2013-11-27 07:58:24

标签: excel excel-formula excel-2010 worksheet-function

我在Excel中使用2个电子表格,如下所示:

表1:'摘要'

  

| - | --- A ----- | ------ B ----- | - C-- | - D - | - E-- | - F-- | - G- |
  | 1 | __ ID___ |开始日期| FEB | MAR | APR |五月| JUN |

     

| 2 | Y01A01 | _ __ _ __ _ __ _ | _1_ | _ 1 _ _ | _ 1_ | _ 1__ | 1_ |
  | 3 | Y01A02 | _ __ _ __ _ ___ | _0_ | _ 0__ | _ 0__ | _ 1__ | 1 |

     

| 4 | Y01A03 | _ __ _ __ _ ___ | _ 1_ | _ 1_ | _ 1_ | __ 1_ | _ 0 |

表2:'2月'

  

| - | ---- A - | ---- B ----- | - C - | - D - | ----- E -------- |
  | 1 | ID_ _ __ |日期 ____ |发烧|咳嗽|跑鼻子|

     

| 2 | Y01A01 | 1/2/2013 | NA __ | NA_ _ | NA _ __ _ ___ |

     

| 3 | Y01A01 | 2/2/2013 | NA__ | NA __ | NA _ __ _ ___ |

     

| 4 | Y01A01 | 3/2/2013 | 0 _ __ | _ 1 __ | _ 1_ _ __ _ ____ |

表1是流感预防计划的每个参与者的汇总表。他们每个月都要记录他们的流感症状。在C:G列(即2月到6月)下,“1”表示该人已经这样做而“0”表示没有。但是,并非每个人都参与该计划并在一个月的第一天开始录制。例如,在表2中,参与者Y01A01于2013年3月2日开始,因此在2013年1月20日和2013年2月2日没有显示记录(即NA)。 (在表2中,0 =否; 1 =是)

我的问题是,我想找到每个使用Excel公式的人的开始日期(表1,B列)。

我试过使用公式

=INDEX('Feb'!B:B,MATCH(Summary!A2,'Feb'!A:A,0),ISNUMBER(INDEX('Feb'!C:C,MATCH(Summary!A2,'Feb'!A:A,0))))

但它显示1/2/2013错误,而非2013年3月2日。

2 个答案:

答案 0 :(得分:0)

如果您尝试获取每个ID的相应开始日期(从表2到表1),您可以使用=VLOOKUP($A2,FEB!$A$2:$B$65536,2,0)

答案 1 :(得分:0)

我希望你知道如何处理宏?如果你没有请评论我会指导你。

Sub first_date()

Dim MyRange As Range
Dim MyRange1 As Range


Worksheets("Summary").Select

Set MyRange = Worksheets("Summary").Range([a2], [a2].End(xlDown)).Rows.SpecialCells(xlCellTypeVisible)

Worksheets("Feb").Select

Set MyRange1 = Worksheets("Feb").Range([a2], [a2].End(xlDown)).Rows.SpecialCells(xlCellTypeVisible)

Worksheets("Summary").Select

For Each MyCell In MyRange.Cells
    With MyRange1
    Set rng1 = .Cells.Find(MyCell.Value)
        If Not rng1 Is Nothing Then

            Do

                If IsNumeric(rng1.Offset(0, 2).Value) Then

                MyCell.Offset(0, 1).Value = rng1.Offset(0, 1)

                Exit Do:

                End If

            Set rng1 = .Cells.FindNext(rng1)

            Loop While rng1.Address <> strAddress

        End If

    End With

Next

End Sub