我有一个 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
假设我正确理解您的问题,您可以使用 Power Query 来解决您的问题。 将表定义为命名范围,例如将其命名为“Table”并将其导入 Power Query。 在Power Query中,选择合并单元格的列并使用向下填充功能。
输入示例:
电源查询代码:
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"
在此阶段,您可以根据需要过滤列。
输出: