Vba 最小值的订单值e从供应商处获取名字和姓氏

Vba 最小值的订单值e从供应商处获取名字和姓氏,vba,excel,Vba,Excel,我在“user3598756”的帮助下编写了以下代码。 代码表示最小销售值,并表示供应商名称(一列一个名称)。 我需要按数字降序排列这些值,先是10,然后是9,以此类推,最小值为5。 还需要在一个单元格中仅获取供应商的名字 现在是这样的: 代码: 我还没有必要的技能去做这件事。 提前谢谢 如果我正确理解您的目标,请尝试以下代码: Option Explicit Sub worst() Dim copyrow As Long Dim helpRng As Range, co

我在“user3598756”的帮助下编写了以下代码。 代码表示最小销售值,并表示供应商名称(一列一个名称)。 我需要按数字降序排列这些值,先是10,然后是9,以此类推,最小值为5。 还需要在一个单元格中仅获取供应商的名字

现在是这样的:

代码:

我还没有必要的技能去做这件事。
提前谢谢

如果我正确理解您的目标,请尝试以下代码:

Option Explicit

Sub worst()
    Dim copyrow As Long
    Dim helpRng  As Range, copyRng As Range

    With Worksheets("Resumo")
        With .Range("J11:J47")
            Set helpRng = .Offset(, .Parent.UsedRange.Columns.Count)
            helpRng.Value = .Value
            helpRng.Offset(, 1).Value = .Offset(, -7).Value
            Set helpRng = helpRng.Resize(.Rows.Count + 1, 2).Offset(-1)
        End With
    End With

    copyrow = 30
    Set copyRng = Worksheets("os melhores").Cells(copyrow, "J").Resize(5, 2)
    With helpRng
        .Cells(1, 1).Resize(, 2) = "header"
        .Sort key1:=helpRng, order1:=xlAscending, Header:=xlYes
        .AutoFilter field:=1, Criteria1:=">0"
        If Application.WorksheetFunction.Subtotal(103, .Resize(, 1)) > 1 Then
            copyRng.Value = .Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible).Resize(5).Value
            copyRng.Sort key1:=copyRng.Cells(1, 1), order1:=xlDescending, Header:=xlNo
            Application.DisplayAlerts = False
            copyRng.Columns(2).TextToColumns DataType:=xlDelimited, ConsecutiveDelimiter:=True, Space:=True
            Application.DisplayAlerts = True
            copyRng.Offset(, -1).Resize(, 1).FormulaR1C1 = "=CONCATENATE(RC[2], "" "", OFFSET(RC[1],,COUNTA(RC[2]:RC" & .Parent.Columns.Count & ")))"
            copyRng.Value = copyRng.Value
        End If
        .Parent.AutoFilterMode = False
        .ClearContents
    End With
End Sub

再次显示所需的输出应该是多少。是这样的,但是现在,当运行代码时,看到一个msgbox,它说“已经在这里了”。你想替换它吗?有可能阻止它发生吗?代码将公式保留在单元格中,用户无法通过vba查看代码?。谢谢。只需在导致msgbox的语句之前添加
Application.DisplayAlerts=False
语句,然后在它之后还原
Application.DisplayAlerts=True
。请参见编辑的代码。如果我完成了你的问题,请将答案标记为已接受。谢谢你好,很抱歉回复晚了,但是我没有上网。现在,它在供应商名称中给出了错误#名称。该值正常。我注意到代码有另一种语言(我想),Hi-add找出了它,并更正了它。错误已经消失,但公式仍然在单元格中显示。在没有配方留在牢房里的情况下,有可能做到这一点吗?谢谢。对于公式错误,我很抱歉:我留下了对英语版本的注释,而没有对意大利语版本的注释。请参见编辑的代码。这应该可以解决一切问题。
Option Explicit

Sub worst()
    Dim copyrow As Long
    Dim helpRng  As Range, copyRng As Range

    With Worksheets("Resumo")
        With .Range("J11:J47")
            Set helpRng = .Offset(, .Parent.UsedRange.Columns.Count)
            helpRng.Value = .Value
            helpRng.Offset(, 1).Value = .Offset(, -7).Value
            Set helpRng = helpRng.Resize(.Rows.Count + 1, 2).Offset(-1)
        End With
    End With

    copyrow = 30
    Set copyRng = Worksheets("os melhores").Cells(copyrow, "J").Resize(5, 2)
    With helpRng
        .Cells(1, 1).Resize(, 2) = "header"
        .Sort key1:=helpRng, order1:=xlAscending, Header:=xlYes
        .AutoFilter field:=1, Criteria1:=">0"
        If Application.WorksheetFunction.Subtotal(103, .Resize(, 1)) > 1 Then
            copyRng.Value = .Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible).Resize(5).Value
            copyRng.Sort key1:=copyRng.Cells(1, 1), order1:=xlDescending, Header:=xlNo
            Application.DisplayAlerts = False
            copyRng.Columns(2).TextToColumns DataType:=xlDelimited, ConsecutiveDelimiter:=True, Space:=True
            Application.DisplayAlerts = True
            copyRng.Offset(, -1).Resize(, 1).FormulaR1C1 = "=CONCATENATE(RC[2], "" "", OFFSET(RC[1],,COUNTA(RC[2]:RC" & .Parent.Columns.Count & ")))"
            copyRng.Value = copyRng.Value
        End If
        .Parent.AutoFilterMode = False
        .ClearContents
    End With
End Sub