Excel 同时转移和插入细胞
我遇到了以下问题。我的数据集如下所示:Excel 同时转移和插入细胞,excel,vba,Excel,Vba,我遇到了以下问题。我的数据集如下所示: 1 3 4 6 7 1 2 2 4 5 9 5 1 2 3 5 我想取每个表中常见的单个数字,并将它们排列在一列中: 1 2 3 4 5 6 7 9 我对脚本所采用的方法是,识别一行中有多个完整的单元格,然后执行命令将当前范围下的相邻单元格转置。到目前为止,我得到的是: Sub RecordArrangeTest() Dim Rng As Range Dim i As Long Dim n As Long Dim Wholec
1 3 4 6 7
1 2
2 4 5 9
5
1 2 3 5
我想取每个表中常见的单个数字,并将它们排列在一列中:
1
2
3
4
5
6
7
9
我对脚本所采用的方法是,识别一行中有多个完整的单元格,然后执行命令将当前范围下的相邻单元格转置。到目前为止,我得到的是:
Sub RecordArrangeTest()
Dim Rng As Range
Dim i As Long
Dim n As Long
Dim Wholecolumn As Range
Dim Lastcolumn As Long
Lastcolumn = Range("A1").CurrentRegion.Columns.Count
i = 1
Dim lastRow As Long
lastRow = Range("A1").End(xlDown).row
While i <= lastRow
Set Rng = Range("A" & i)
Set Wholecolumn = Range(Cells(i, i), Cells(1, Lastcolumn))
If IsEmpty(Rng.Offset(0, 1).Value) = False Then
Range(Rng.Offset(1, 0), Rng.Offset(Lastcolumn, 0)).Insert Shift:=xlDown
Wholecolumn.Copy
Rng.Offset(1, 0).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Wholecolumn.Delete Shift:=xlUp
i = i + 1
Else: i = i + 1
End If
Wend
End Sub
子记录排列测试()
变暗Rng As范围
我想我会坚持多久
长
模糊整列为范围
将最后一列变长
Lastcolumn=范围(“A1”).CurrentRegion.Columns.Count
i=1
最后一排一样长
lastRow=范围(“A1”)。结束(xlDown)。行
当我时,我会使用一个忽略重复项的字典并遍历所有使用的单元格,然后清除整个范围并将字典粘贴回原来的位置
Sub foo()
Dim ws As Worksheet
Set dict = CreateObject("scripting.dictionary")
Dim rng As Range
Dim t
Dim i As Long
Set ws = Sheets("Sheet1")
For Each rng In ws.UsedRange
If rng <> "" Then
On Error Resume Next
dict.Add rng.Value, rng.Value
On Error GoTo 0
End If
Next rng
ws.UsedRange.ClearContents
i = 1
For Each t In dict
ws.Cells(i, "A").Value = t
i = i + 1
Next t
ws.Range("A1:A" & i).Sort key1:=ws.Range("A1")
End Sub
Sub-foo()
将ws设置为工作表
Set dict=CreateObject(“scripting.dictionary”)
变暗rng As范围
暗t
我想我会坚持多久
设置ws=图纸(“图纸1”)
对于ws.UsedRange中的每个rng
如果rng为“”,则
出错时继续下一步
指令加上rng.Value,rng.Value
错误转到0
如果结束
下一个rng
ws.UsedRange.ClearContents
i=1
对于dict中的每个t
ws.Cells(i,“A”).Value=t
i=i+1
下一个t
ws.Range(“A1:A”和i).排序键1:=ws.Range(“A1”)
端接头
也许不是您的解决方案,但Power Query(获取和转换)将起作用。使用名为“Table1”的5列表格中的源数据,将其粘贴到Power Query中的高级编辑器中:
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", Int64.Type}, {"Column2", Int64.Type}, {"Column3", Int64.Type}, {"Column4", Int64.Type}, {"Column5", type any}}),
#"Col1" = Table.SelectColumns(#"Changed Type",{"Column1"}),
#"Rename1" = Table.RenameColumns(Col1,{{"Column1", "ColumnName"}}),
#"Col2" = Table.SelectColumns(#"Changed Type",{"Column2"}),
#"Rename2" = Table.RenameColumns(Col2,{{"Column2", "ColumnName"}}),
#"Col3" = Table.SelectColumns(#"Changed Type",{"Column3"}),
#"Rename3" = Table.RenameColumns(Col3,{{"Column3", "ColumnName"}}),
#"Col4" = Table.SelectColumns(#"Changed Type",{"Column4"}),
#"Rename4" = Table.RenameColumns(Col4,{{"Column4", "ColumnName"}}),
#"Col5" = Table.SelectColumns(#"Changed Type",{"Column5"}),
#"Rename5" = Table.RenameColumns(Col5,{{"Column5", "ColumnName"}}),
#"AppendQueries" = Table.Combine({Rename1,Rename2,Rename3,Rename4,Rename5}),
#"RemoveDuplicates" = Table.Distinct(#"AppendQueries"),
#"SortRows" = Table.Sort(#"RemoveDuplicates",{{"ColumnName", Order.Ascending}})
in
#"SortRows"
谢谢我首先得到一个“Set Dict”的编译错误。我需要先设置尺寸线吗?它对我来说可以正常工作,您可以尝试在之前添加尺寸线作为对象@用户1996971