使用vba从添加标题的范围中复制值并按大小在Excel中排序

龙虾仔

我有一个从 B5 到 R20 的表格,每一行都有一个标题,并不是范围内的每个单元格(标题除外)都有值。表看起来像这样: John empty empty 2 5 300... Steve empty 23 45 130... Todd 100 123 150 170... ... 名称是标题,而不是零,有空单元格。我需要在新列(AJ 列)中复制这些值,并且我需要复制每个值旁边的适当标题(标题值在列 AI 中)。复制后,这两列应按 AJ 列降序排序。到目前为止我有这个:

Sub Sorter()

Dim g As Integer
Dim sourceCol As Integer
Dim rowCount As Integer
Dim currentRow As Integer
Dim currentRowValue As String
Dim sourceCol1 As Integer
Dim rng1 As Range
Dim t As Integer

sourceCol = 35
sourceCol1 = sourceCol + 1
rowCount = 300

t = 5
    For g = 1 To 16
            Set rng1 = Range(Rows(t).Cells(3), Rows(t).Cells(18))
            If rng1.Cells(g) > 0 Then

            For currentRow = 1 To rowCount
                currentRowValue = Cells(currentRow, sourceCol).Value
                If IsEmpty(currentRowValue) Or currentRowValue = "" Then
                    Cells(t, 2).Select
                    Selection.Copy
                    Cells(currentRow, sourceCol).PasteSpecial xlPasteValues
                    Cells(t, g).Select
                    Selection.Copy
                    Cells(currentRow, sourceCol1).PasteSpecial xlPasteValues
                End If
            Next currentRow
            End If
            t = t + 1
        Next g

' This part sorts the two columns
Columns("AI:AJ").Select
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range( _
    "AJ1:AJ300"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
    xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").Sort
    .SetRange Range("AI1:AJ300")
    .Header = xlGuess
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

Kraj:
End Sub

所以,排序部分正在工作,但复制部分给我带来了问题。我被卡住了,你能帮忙吗?结果应该是:

    AI     AJ
    John   300
    Todd   170
    Todd   150
    Steve  130
    ... etc
H2SO4

一个可能的测试解决方案。

Sub Sorter()
    Dim g As Integer
    Dim sourceCol As Integer
    Dim rowCount As Integer
    Dim currentRow As Integer
    Dim targetrow As Long
    Dim currentRowValue As String
    Dim sourceCol1 As Integer
    Dim rng1 As Range
    Dim t As Integer

    sourceCol = 35
    sourceCol1 = sourceCol + 1
    rowCount = 300
    targetrow = 1
    t = 5
    With ActiveWorkbook.Worksheets("Sheet1")
        While .Cells(t, 1) <> ""
            For g = 2 To 17
                If .Cells(t, g) > 0 Then
                    targetrow = targetrow + 1
                    .Cells(targetrow, sourceCol) = .Cells(t, 1)
                    .Cells(targetrow, sourceCol1) = .Cells(t, g)
                End If
            Next g
            t = t + 1
        Wend
        ' This part sorts the two columns
        With .Sort
            .SortFields.Clear
            .SortFields.Add Key:=Range("AJ1:AJ300"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
            .SetRange Range("AI1:AJ300")
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End With
End Sub

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Excel VBA复制列中的范围

来自分类Dev

如何只复制范围内的Excel VBA中的值?

来自分类Dev

如何只复制范围内的Excel VBA中的值?

来自分类Dev

比较2个Excel工作表中的值并按VBA降序排序

来自分类Dev

使用VBA的大文件大小复制范围

来自分类Dev

使用VBA宏在excel中复制变量范围

来自分类Dev

打印标题并按数组值排序

来自分类Dev

在VBA Excel中复制粘贴范围

来自分类Dev

Excel VBA-复制多个范围并按选择顺序粘贴它们而不会覆盖

来自分类Dev

Excel VBA排序范围

来自分类Dev

使用VBA在Excel 2016中复制和粘贴值

来自分类Dev

Excel VBA将范围值复制到数组,

来自分类Dev

Excel VBA 从 Excel 复制范围并将其粘贴到 Word 标题文本框

来自分类Dev

使用VBA将范围从Excel工作表复制到PowerPoint中的表

来自分类Dev

使用VBA将动态范围复制并粘贴到Excel中的新工作表

来自分类Dev

如何使用 Excel VBA 在 InnerText 中复制或插入多个范围数据

来自分类Dev

Excel VBA:复制/粘贴范围

来自分类Dev

使用Excel VBA宏对单列中的单元格范围进行排序

来自分类Dev

在Excel VBA中,如何在范围内添加自动值

来自分类Dev

VBA代码将Excel范围复制并粘贴到Outlook中

来自分类Dev

通过VBA在Excel中调整命名范围的大小

来自分类Dev

使用VBA在excel中连续复制几个值并在同一行中多次粘贴

来自分类Dev

Excel VBA对范围底部的空白和空值进行排序的范围

来自分类Dev

VBA-在Excel中排列数据值

来自分类Dev

VBA-在Excel中排列数据值

来自分类Dev

在VBA排序中设置范围

来自分类Dev

Excel VBA - 根据单独的范围值复制非空白单元格值

来自分类Dev

如何使用Excel中的单元格值在VBA中指定范围

来自分类Dev

Excel VBA,使用从单元格中收集值的变量定义范围

Related 相关文章

  1. 1

    使用Excel VBA复制列中的范围

  2. 2

    如何只复制范围内的Excel VBA中的值?

  3. 3

    如何只复制范围内的Excel VBA中的值?

  4. 4

    比较2个Excel工作表中的值并按VBA降序排序

  5. 5

    使用VBA的大文件大小复制范围

  6. 6

    使用VBA宏在excel中复制变量范围

  7. 7

    打印标题并按数组值排序

  8. 8

    在VBA Excel中复制粘贴范围

  9. 9

    Excel VBA-复制多个范围并按选择顺序粘贴它们而不会覆盖

  10. 10

    Excel VBA排序范围

  11. 11

    使用VBA在Excel 2016中复制和粘贴值

  12. 12

    Excel VBA将范围值复制到数组,

  13. 13

    Excel VBA 从 Excel 复制范围并将其粘贴到 Word 标题文本框

  14. 14

    使用VBA将范围从Excel工作表复制到PowerPoint中的表

  15. 15

    使用VBA将动态范围复制并粘贴到Excel中的新工作表

  16. 16

    如何使用 Excel VBA 在 InnerText 中复制或插入多个范围数据

  17. 17

    Excel VBA:复制/粘贴范围

  18. 18

    使用Excel VBA宏对单列中的单元格范围进行排序

  19. 19

    在Excel VBA中,如何在范围内添加自动值

  20. 20

    VBA代码将Excel范围复制并粘贴到Outlook中

  21. 21

    通过VBA在Excel中调整命名范围的大小

  22. 22

    使用VBA在excel中连续复制几个值并在同一行中多次粘贴

  23. 23

    Excel VBA对范围底部的空白和空值进行排序的范围

  24. 24

    VBA-在Excel中排列数据值

  25. 25

    VBA-在Excel中排列数据值

  26. 26

    在VBA排序中设置范围

  27. 27

    Excel VBA - 根据单独的范围值复制非空白单元格值

  28. 28

    如何使用Excel中的单元格值在VBA中指定范围

  29. 29

    Excel VBA,使用从单元格中收集值的变量定义范围

热门标签

归档