首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >以列的形式从一行中取出数据并将其放入不同的工作表中。只有在列出了拥有数据、姓名的人员时,才会移动数据

以列的形式从一行中取出数据并将其放入不同的工作表中。只有在列出了拥有数据、姓名的人员时,才会移动数据
EN

Stack Overflow用户
提问于 2019-06-06 00:16:38
回答 1查看 39关注 0票数 -2

我有合并的数据,其中包含一个人在工作中做得有多好。它有一封私人电子邮件,右边有两行数据。在另一张工作表上,我创建了一个座位图的鸟瞰视图,现在我需要将数据放在人员所坐的位置(以列的形式,例如B4和C4 )。例如,我的数据是单元格A1中的人的电子邮件,而他们的数据是B1和C1。现在另一个问题是,实际数据来自网站,因此数据将不断更新。所以这意味着一个人的数据将会改变,或者根本不会出现。不过,也许一个新人可能会带来数据。当然,这意味着新的电子邮件和新的数据。

我试着使用IF语句,结果出了问题。

代码语言:javascript
复制
Sub button()

     With Worksheets("three").Range("G1")

        If .Value = "sconlon@iadvancenow.com" Then

            Worksheets("Sheet2").Range("C3") = .Offset(0, 1).Value
            Worksheets("Sheet2").Range("D3") = .Offset(0, 2).Value


        End If

    End With

End Sub

这就是当一切都正常时,最终应该发生的事情。合并的数据将被移动到另一个工作表(座位图),在该人员的姓名下是他们的数据。因此,整合的数据将放在那里。现在数据将被更新,因此一个人的数据将发生变化,以前没有数据的人现在将拥有或将不会拥有数据。

data enter image description here

座位图enter image description here

这是一张很大的座位图,但这是一张旧的,但它与我现在的相似,但这两个名字的最后一张照片来自我的实际工作表

我现在有enter image description here的问题

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-06 02:18:46

试一试:

代码语言:javascript
复制
Sub tgr()

    Dim wb As Workbook
    Dim wsData As Worksheet
    Dim wsDest As Worksheet

    Set wb = ActiveWorkbook
    Set wsData = wb.Worksheets("three")
    Set wsDest = wb.Worksheets("Sheet2")

    Dim aSeatingRows As Variant
    aSeatingRows = Array(25, 44, 65, 82, 101, 120, 139)

    Dim aSeatingCols As Variant
    aSeatingCols = Array("B", "E", "I", "P", "S", "W", "Z")

    Dim vResult As Variant
    Dim sEmail As String
    Dim vRow As Variant
    Dim vCol As Variant
    Dim i As Long

    For Each vRow In aSeatingRows
        For Each vCol In aSeatingCols
            sEmail = Application.Trim(wsDest.Cells(vRow, vCol).Value)
            If Len(sEmail) > 0 Then
                sEmail = Left(sEmail, 1) & Split(sEmail, " ")(1) & "@iadvancenow.com"
                For i = 2 To 3
                    vResult = Application.VLookup(sEmail, wsData.Range("G:I"), i, False)
                    If IsError(vResult) Then
                        wsDest.Cells(vRow + i + 12, vCol).ClearContents
                    Else
                        wsDest.Cells(vRow + i + 12, vCol).Value = vResult
                    End If
                Next i
            Else
                wsDest.Cells(vRow + 14, vCol).Resize(2).ClearContents
            End If
        Next vCol
    Next vRow

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

https://stackoverflow.com/questions/56464363

复制
相关文章

相似问题

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