Макрос не делится как надо - часть 2 - PullRequest
0 голосов
/ 04 января 2019

Я разместил вопрос на сайте Stack, чтобы помочь с некоторым кодом, потому что он работает не совсем так, как я хочу. Человек любезно ответил советом ниже, но я не знаю, какие изменения должны быть внесены в мой код, потому что я не понимаю предложенное изменение. Мне было интересно, может ли кто-нибудь помочь мне изменить мой код, чтобы я мог использовать это изменение. При необходимости я могу опубликовать весь код, если это поможет. PS. прежде чем кто-то ответит, почему вы просто не спросили человека, который дал предложение: я сделал.

Совет: исправьте так, чтобы задний правый пара перемещался на 4 позиции влево.

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 голосов
/ 04 января 2019

Идя из середины показывает мне:

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

в результате

4
400-
399

Итак, я думаю, что ваш помощник говорил, переместил самый правый параметр (-1) в левую скобку функции.

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

в результате

400

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...