将单个单元格中的文本拆分为多行,原始单元格依赖于过滤器

时间:2018-06-01 11:51:31

标签: excel vba excel-vba

我有一个数据仪表板设置过滤选项多年(2016年,2015年等)。

我的数据以表格形式提供,格式如下: Data layout

我现在需要做的是根据我在仪表板上的下拉列表中选择的年份选择正确的单元格(例如,如果过滤器在2016年设置,则选择单元格AB2;如果选择的年份是2015,则选择单元格AC2),在这个单元格中拆分逗号分隔值,并将它们作为单独的行添加到我的输出表中,如下所示: Output layout

各个单元格中逗号分隔的字符串数量可能会有所不同,因此输出表格需要根据单元格中单独值的数量自动展开。

到目前为止,我的代码是基于它们是否为空而自动隐藏或取消隐藏表中的行(因此表根据从原始单元格中提取的分隔值自动扩展)。

Sub HideUnhide()
Dim LEB As Range
Application.ScreenUpdating = False
    For Each LEB In Range("D56:D145")
        If LEB.Value = 0 Then
            LEB.EntireRow.Hidden = True
                 Else
            LEB.EntireRow.Hidden = False
        End If
    Next LEB
Application.ScreenUpdating = True
End Sub

1 个答案:

答案 0 :(得分:3)

这是一个应该做你想做的代码:

  • 根据一年
  • 找到合适的专栏
  • 使用","获取值作为第二行的分隔符
  • 粘贴上次使用的行+ 1

    中D列中的值
    Sub Test()
    Dim MyArray() As String
    MyArray() = Split(ActiveSheet.Cells(2, ActiveSheet.Rows(1).Find(What:="2017", LookAt:=xlPart, MatchCase:=False, SearchFormat:=False).Column), ",")
    For i = LBound(MyArray) To UBound(MyArray)
        ActiveSheet.Range("D" & ActiveSheet.Cells(ActiveSheet.Rows.Count, "D").End(xlUp).Row + 1) = MyArray(i) 'Populate your range
    Next i
    End Sub