根据一列中可用的关键字在 Excel 上拆分工作表

问题描述 投票:0回答:1

我有一个 excel 主文件。我必须根据一列中可用的一个关键字将 Excel 文件拆分为另一个 Excel 文件。 其余数据(不包括该关键字)将被拆分为其他数据。

示例:在此处输入图像描述

我在Sheet1中有数据。关键字“HN”在 AB 列中随机可用,如

我必须将 F 列中包含关键字的所有行移动到 Sheet2(名称 HN)中。

谢谢

吉隆坡

我们可以用 VBA 代码来解决这个问题吗? 预先感谢您。

添加我使用的VBA代码

99%有效。

例如:如图所示,第 2 行和第 3 行合并。问题是第 2 行和第 3 行将被取消合并,并且不会像此图像那样移动第 3 行在此处输入图像描述

我们可以修改代码,如果满足条件则移动所有合并的行吗?

Sub Movedata()
Dim ListOfWords As Range, ListWord As Range, EndRw As Long, DltRng As Range
Set ListOfWords = Range("AB1:AB" & Cells(Rows.Count, "AB").End(xlUp).Row)
EndRw = Cells(Rows.Count, "F").End(xlUp).Row
For Each ListWord In ListOfWords
  For Each Rng In Range("F2:F" & EndRw)
    If InStr(Rng, ListWord) Then
      Rng.Offset(, -5).Resize(, 22).Copy Sheets("HN").Cut Cells(Rows.Count, "A").End(xlUp)(2)
      If DltRng Is Nothing Then
        Set DltRng = Rng.Offset(, -5).Resize(, 22)
      Else
        Set DltRng = Union(DltRng, Rng.Offset(, -5).Resize(, 22))
      End If
    End If
  Next Rng
Next ListWord
If Not DltRng Is Nothing Then DltRng.Delete Shift:=xlUp
End Sub
excel vba keyword code-splitting
1个回答
0
投票

假设我正确理解您的问题,您可以使用 Power Query 来解决您的问题。 将表定义为命名范围,例如将其命名为“Table”并将其导入 Power Query。 在Power Query中,选择合并单元格的列并使用向下填充功能。

输入示例:

enter image description here

电源查询代码:

let
    Source = Excel.CurrentWorkbook(){[Name="Table"]}[Content],
    #"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
    #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"A", Int64.Type}, {"B", Int64.Type}, {"C", type text}, {"D", type number}}),
    #"Filled Down" = Table.FillDown(#"Changed Type",{"A", "B", "C"})
in
    #"Filled Down"

在此阶段,您可以根据需要过滤列。

输出:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.