gpt4 book ai didi

vba - 我如何有条件地将一行中的数据排序为第二行中的近似数据匹配?

转载 作者:行者123 更新时间:2023-12-04 20:13:15 25 4
gpt4 key购买 nike

所以,我有一个数据排序问题。

本质上,我想对第 2 行到第 48 行的单元格进行排序,使它们低于第 1 行中的近似值(下图中的椭圆用作行内所有其他单元格的占位符;所有行,1 到 48 ,将从 EG 扩展到 IB,使每行总共 100 个单元格)。

数据通常会如下所示:

have

但是我要求将第 2 到 48 行的数据以近似值(在 1.2 以内)排序在其第 1 行对应项之下,如下所示:

want

现在对值进行排序,使用第 1 行作为所有其他行排序到的主行。如果第 2-48 行中的单元格值不满足其第 1 行对应方的 1.2 范围内的条件,则必须将第 2-48 行中的单元格留空。

我最初的代码是这样写的:

Sub t()

Dim F As Range
Dim Q As Range

For Each F In Range("EG1:IB1").Cells
For Each Q In Range("EG2:IB2").Cells
If Q.Value <= (F.Value + 1.2) Then
F.Offset(1, 0).Value = Q.Value
Exit For
End If
Next Q
Next F

End Sub

显然,这段代码不会产生预期的结果,但我不知道为什么。目的是针对第 2 行迭代检查第 1 行的数据值,如果在第 2 行中找到具有必要标准的值(在当前第 1 行单元格值的 1.2 范围内),则将其放在第 1 行对应的下方1.

所以,假设:
  • 第 1 行将包含所有 100 个单元格中的数据值,并且
  • 第 2-48 行不会在所有 100 个单元格中都有数据,并且
  • 不包含数据的单元格将为空,
  • 我想将代码限制为一次对一行进行排序(为了安全起见,每次程序运行时检查和排序单个行与第 1 行)

  • 如何重写(如果需要,完全重写)我的代码,以便我可以对数据进行排序,如第一张图片中的示例,以最适合第二张图片中示例的数据组织?

    提前谢谢你,如果这实际上是一个我忽略的非常简单的解决方案,请原谅我!

    最好的,

    最佳答案

    横向对每一行进行排序应该更正任何无序的值,并将它们全部“集中”在 EG1:IB48 范围的左端。之后,插入一个新单元格(右移其他值)应该更正位置。

    Sub sort_and_push()
    Dim rw As Long, cl As Long

    With Worksheets("Sheet4") '<~~ set this correctly!
    With .Range("EG1:IB48")
    With .Rows(1)
    .Cells.sort Key1:=.Rows(1), Order1:=xlAscending, _
    Orientation:=xlLeftToRight, Header:=xlNo
    End With
    For rw = 2 To .Rows.Count
    .Rows(rw).Cells.sort Key1:=.Rows(rw), Order1:=xlAscending, _
    Orientation:=xlLeftToRight, Header:=xlNo
    For cl = 1 To 99
    If IsEmpty(.Cells(rw, cl)) Then
    Exit For
    ElseIf .Cells(rw, cl).Value2 > .Cells(1, cl + 1).Value2 Then
    .Cells(rw, cl).Insert Shift:=xlToRight
    End If
    Next cl
    Next rw
    End With
    End With
    End Sub

    enter image description here

    关于vba - 我如何有条件地将一行中的数据排序为第二行中的近似数据匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33335926/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com