首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果工作表1的列中的日期也在工作表2的列中,如何使用工作表2中的一行数据自动填充工作表3?

问如果工作表1的列中的日期也在工作表2的列中,如何使用工作表2中的一行数据自动填充工作表3?
EN

Stack Overflow用户
提问于 2019-04-23 02:19:25
回答 2查看 17关注 0票数 0

到目前为止,我有一个有两张纸的工作簿。1个工作表表示某列中的日期与相邻列中的其他数据在这里不相关。在表2中,一列中也有一个日期,然后相邻的10个列也有一串数据。我想创建一个新的表(工作表3),当且仅当工作表1中的日期也在工作表2中时,它才会填充,并且只返回工作表2中匹配日期的整行的数据。

例如,在表1中,我在B4中有2019年2月19日。表2也有2/19/2019在它的右边有一堆数据,用于当天的生产。在工作表3中,我想自动返回工作表2中的整行。这可能吗?我有点头疼:)

我尝试过使用COUNTIF和MATCH,但我似乎不能理解如何让它检查整个列的匹配日期。

EN

回答 2

Stack Overflow用户

发布于 2019-04-23 17:30:55

如果我是你,我会:

  • 在'Sheet 1‘和'Sheet 2’中,确保所有日期都在'A‘列中。
  • 创建'Sheet 3’并在‘A’列中列出所有可能的日期。

在'Sheet 3‘的'B’栏中,写下下面的公式...

代码语言:javascript
复制
=IF(COUNTIFS('Sheet 1'!$A:$A,$A1,'Sheet 2'!$A:$A,$A1)>0,VLOOKUP($A1,'Sheet 2'!$A:$Z,#COLUMN NUMBER#,0),"")

您需要将#COLUMN NUMBER#替换为您希望从'Sheet 2‘返回的列号。输入“1”(不带引号)将返回列“A”,输入“2”将返回列“B”,依此类推...

在“表3”中,根据需要在任意多的列中重复此操作。

希望这能有所帮助!

票数 0
EN

Stack Overflow用户

发布于 2019-04-23 22:00:05

仅仅使用公式就有点复杂了。Dominic的建议将首先解决这个问题。虽然,我认为它可能有一些问题的评论提到“多行共享相同的日期表2”。我认为公式只会返回符合条件的第一行。

我看到没有VBA标记,但我能想到的唯一答案是一个VBA脚本来绕过这些子句。它还需要"Sheet2“上的帮助器列来标识已经检查了一行,我已经将其设置为测试电子表格中的H列(第8列)。

如果这对你有用,请在下面找到它。

代码语言:javascript
复制
Option Explicit
Sub Worksheet_activate()
Dim b, c, d, x As Integer
Dim a, ab, ac As Worksheet

'Names of the spreadsheets need to be in the speech marks.
Set a = Worksheets("Sheet1")    'Sheet to be compared.
Set ab = Worksheets("Sheet2")   'Sheet to look through and copy from.
Set ac = Worksheets("Sheet3")   ' Sheet to be pasted into.

b = a.Cells(a.Rows.Count, "A").End(xlUp).Row            'Bottom date in column A of "Sheet1"
c = ab.Cells(ab.Rows.Count, "A").End(xlUp).Row          'Bottom date in column A of "Sheet2"
d = ac.Cells(ac.Rows.Count, "A").End(xlUp).Row + 1      'Next empty space in column A of "Sheet3"
e = 8                                                   'Number value for the helper column. Set as 8 for column H.
x = 2

Do Until x > c
    'Helper column placed in column H.
    If ab.Cells(x, e) = "" Then
        If WorksheetFunction.CountIf(a.Range("A2:A" & b), ab.Range("A" & x)) >= 1 Then
            ab.Rows(x).Copy
            ac.Range("A" & d).PasteSpecial xlPasteValuesAndNumberFormats
            d = ac.Cells(ac.Rows.Count, "A").End(xlUp).Row + 1
        End If
    End If
    'Text added to helper column
    ab.Cells(x, e) = "Yes"
    x = x + 1
Loop
Application.CutCopyMode = False
ac.Range("A" & d).Select
End Sub

需要编辑以下信息以适应您的电子表格:

此处更改语音标记中3个电子表格的名称,例如a=工作表(“

  • ”)
  • 将e的值更改为帮助列所在的列号,即= column ()

然后,在粘贴到打开的窗口之前,需要将其添加到工作表中,方法是右键单击要复制数据的工作表,并选择“查看代码”。代码在选项卡打开时运行,因此在某些情况下可能需要切换选项卡以更新它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55799085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档