宏未按要求分割-第2部分

时间:2019-01-04 15:07:56

标签: excel vba excel-vba

我在Stack网站上发布了一个问题,以提供一些代码帮助,因为它无法完全按照我想要的方式工作。有人在下面的建议中做出了回应,但是我不知道要对代码进行哪些更改,因为我不理解建议的更改。我想知道是否有人可以帮助我更改我的代码,以便我可以使用该更改。如果需要,我可以发布整个代码(如果有帮助的话)。 PS。在有人回应之前,您为什么不问提出建议的人:我同意了。

建议:进行修复,以使尾随的右侧paren向左移动4 pos。

Val(Left(pair, InStr(pair, "-"))) - 1 

我有一个有效的宏,但只有在除以19.00时才有效。如果要除以20.00或更高的数字,则仅除以10.00,仅此而已。假设将不超过12.00的任何数字划分为10个单元格,超过12.00的任何数字被划分为找到的对中的第一个数字。我已经复制了我的Excel工作表。要划分的数字在单元格D30(20.00)中。

Sub DIVIDE()
Application.ScreenUpdating = False

Dim pair As Variant, accumulator As Variant
Dim findFifteen As Double
Dim remainder As Long, found As Long

found = 1

For Each pair In Range("B30, F30, J30")
If Right(pair, 2) = 15 Then
    If pair.Offset(0, 2) <= 12 Then
        findFifteen = pair.Offset(0, 2) / 10
        remainder = 0
    Else
        findFifteen = 1
        remainder = pair.Offset(0, 2) Mod 10
    End If

    For Each accumulator In Range("A36, D36, G36, J36, M36, A40, D40, G40, J40, M40")
        If accumulator.Offset(-1, 0) = Val(Left(pair, InStr(pair, "-")   - 1)) Then
            accumulator.Value = accumulator.Value + remainder
        End If
        accumulator.Value = accumulator.Value + findFifteen
    Next accumulator
    End If
Next pair

Application.ScreenUpdating = True
End Sub

Excel工作表:

EXCEL SHEET

1 个答案:

答案 0 :(得分:0)

从中间往外看给我看

pair = "400-bar"
Debug.Print InStr(pair, "-")
Debug.Print Left(pair, InStr(pair, "-"))
Debug.Print Val(Left(pair, InStr(pair, "-"))) - 1

导致

  

4
  400-
  399

所以我认为您的助手在说的是在Left函数括号内移动最右边的参数(-1)。

Debug.Print Val(Left(pair, InStr(pair, "-") - 1))

导致

  

400