gpt4 book ai didi

excel - 嵌套 IF 和直到循环 | VBA

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

此代码工作正常,但有小缺陷。我希望在这里得到一些帮助。
此代码需要比较 2 个值并将该值分成相等的部分并将其放在下一个单元格中。
前两个条件工作正常。第三种情况工作正常,但有以下提到的两个问题,我需要帮助。

  • 例如,如果 X = 2 和 Y = 8,它应该根据 X 值将 Y 分成 4 个相等的部分,但它只将 3 个值 2 放置在偏移单元
  • 此外,如果 Y = 7,那么它应该将值作为 2 2 2 1 放置在相应的单元格中
  • 虽然它正在为具有 Y > X 的第一个单元格工作,但它在更远的单元格中为下一个 Y > X 值
  • 放置了不正确的值

    请告知需要更改的内容。
    Sub Calc()
    Dim ws As Worksheet
    Dim i, j, x, y As Variant
    Dim lrow As Long
    lrow = Worksheets("AB").Cells(Rows.Count, 1).End(xlUp).Row
    Set ws = Workbooks("BC.xlsm").Worksheets("AB")
    j = 9

    With ws
    .Activate
    For i = 2 To lrow
    x = Cells(i, 7).Value
    y = Cells(i, 8).Value
    If y < 0 Then
    Cells(i, 8).Offset(0, 1) = y
    ElseIf y <= x Then
    Cells(i, 8).Offset(0, 1) = y
    ElseIf y > x Then
    Do Until y <= x
    Cells(i, j) = x
    y = y - x
    j = j + 1
    Loop
    End If
    Next i
    End With
    End Sub

    最佳答案

  • 你的变量i, j, x未分配数据类型,仅 y被分配为 variant .
  • 如果您打算使用 With那么它应该通过 . 连接到它的子对象。如下所示。
  • 您的前两个条件具有相同的关联操作,因此它们可以通过 OR 加入。 .
     Sub Calc()

    Dim ws As Worksheet
    Dim i, j, x, y
    Dim lrow As Long

    Set ws = Workbooks("BC.xlsm").Worksheets("AB")
    lrow = ws.Cells(Rows.Count, 1).End(xlUp).Row

    With ws
    For i = 2 To lrow
    x = .Cells(i, 7).Value
    y = .Cells(i, 8).Value
    j = 9
    If y < 0 Or y <= x Then
    .Cells(i, j) = y
    ElseIf y > x Then
    Do Until y <= x
    .Cells(i, j) = x
    .Cells(i, j + 1) = y - x
    y = y - x
    j = j + 1
    Loop
    End If
    Next i
    End With

    End Sub
  • 关于excel - 嵌套 IF 和直到循环 | VBA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68489997/

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