【问题标题】:Display corresponding date of first cell that contains a number per person显示包含每人数字的第一个单元格的相应日期
【发布时间】:2013-11-27 07:58:23
【问题描述】:

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

表 1:“摘要”

| -- | ---一个-----| ------ B -----|--C-- |-- D - |-- E-- |-- F-- |- G- |
| 1 |__ ID___ |开始日期 |二月 |三月 |四月 |五月 |六月 |

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

| 4 | Y01A03 |__________|_ 1_ |_ 1_ | _ 1_ |__ 1_ |_ 0 |

表 2:“二月”

| -- | ---- 一个 - | ---- B ----- | -- C - |-- D -- | ----- E -------- |
| 1 | ID____ |日期____ |发烧|咳嗽|流鼻涕|

| 2 | Y01A01 | 2013 年 1 月 2 日 |不适用 __ |不适用__ |不适用 _______ |

| 3 | Y01A01 | 2013 年 2 月 2 日 |不适用__ |不适用 __ |不适用_______ |

| 4 | Y01A01 | 2013 年 3 月 2 日 | 0 ___ |_ 1 __ | _ 1_________|

表 1 是流感预防计划每个参与者的汇总表。他们必须逐月每天记录他们的流感症状。在 C:G 栏下(即 2 月至 6 月),“1”表示该人已这样做,“0”表示否。但是,并不是每个人都参加该计划并在每月的第一天开始录制。例如,在表 2 上,参与者 Y01A01 于 2013 年 3 月 2 日开始,因此在 2013 年 1 月 2 日和 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))))

但它错误地显示了 2013 年 1 月 2 日,而不是 2013 年 3 月 2 日。

【问题讨论】:

  • 试试VLOOKUP()公式
  • 你考虑使用 VBA 吗?
  • 想不想用是个问题。如果是,我将为您提供代码。有些人想不惜一切代价使用公式。
  • 当然!我愿意!

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


【解决方案1】:

我希望你知道如何处理宏?如果您不喜欢,请发表评论,我会指导您。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 但是,我不仅要查找 ID 首次出现的日期,而且要查找第一个 0 或 1 出现在工作表 2 'C2:E4' 上的日期,或者只是查找列 'C'跨度>
    猜你喜欢
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-04
    相关资源
    最近更新 更多