【问题标题】:Moving a range of cells to another sheet based on value in cell根据单元格中的值将一系列单元格移动到另一个工作表
【发布时间】:2019-09-24 03:48:14
【问题描述】:

我什至不知道如何正确表达这句话,这无疑是我遇到麻烦的原因。

所以我每行有 3 列,namestimevalues。 我想把所有时间都放在同一个名字旁边,然后把它们放在另一张纸上,在以人名为标题的列下。

我会对第一部分感到满意​​,但此外,如果可能的话,我还想确保发布时间时它们与它们最初旁边的值相关。

示例:

john     7    10  
john     5    20  
john   6.5    30                                        
amy     14    10             
amy      8    20    
amy      2    40 

变成

      john    amy  
10       7     14  
20       5      8  
30     6.5   
40              2  

【问题讨论】:

  • 了解 OFFSET、MATCH 和 INDEX 公式并使用它们。
  • 好的,只需阅读所有 3 个。INDEX 似乎有点相关,但我仍然不确定如何使用它来完成我所追求的目标。

标签: excel vba pivot-table


【解决方案1】:
Dim i As Integer, j As Integer
j = 6
Cells(1, 6).Value = Cells(1, 1).Value
For i = 2 To 6
    If Cells(i, 1).Value <> Cells(1, j).Value Then
        Cells(1, j + 1).Value = Cells(i, 1).Value
        j = j + 1
    End If
Next i

Range("C1:C6").Copy
Range("E2:E7").PasteSpecial

Range("E2:E7").Sort Key1:=Range("E2"), Order1:=xlAscending, Header:=xlNo
Range("E2:E7").RemoveDuplicates Columns:=1, Header:=xlNo

For k = 1 To 6
    For m = 6 To 9
        For n = 2 To 6
            If Cells(k, 1).Value = Cells(1, m).Value And Cells(k, 3).Value = Cells(n, 5).Value Then
                Cells(n, m).Value = Cells(k, 2).Value
            End If
        Next n
    Next m
Next k

此代码解决了您的特定示例。请记住,这不是通用代码,因此您必须在实际中更改循环和范围的限制。

【讨论】:

    【解决方案2】:

    这里不需要 VBA,只需使用 Excel 已经内置的强大工具来分析您的数据: Create a PivotTable to analyze worksheet data 结果将如下所示。如果您更改原始数据中的值,您只需要更新数据透视表。

    图 1:并排的原始数据和数据透视表(抱歉是德语截图)。

    【讨论】:

    • 为什么会被否决?这是数据透视表的完美用例。
    • 每次我尝试使用数据透视表时都会收到有关无效引用的错误
    • 如果该评论是一个问题,您必须更准确。因为 PivotTables 就像一个魅力(正如您在我的帖子中看到的那样),所以您可能做错了什么。因此,我们需要确切地知道您做了什么以及您得到的确切错误消息。最好是问一个新问题,用屏幕截图显示你做了什么并解释发生了什么。
    猜你喜欢
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多