Макрос не выполняет всех функций, которые он должен делать - PullRequest
0 голосов
/ 13 ноября 2018

Извиняюсь, если это простой вопрос, но у меня есть макрос, который делится, как и должен, но он не будет копировать и вставлять содержимое из одной ячейки в другую, как это предполагается делать.Ниже приведены примеры с ожидаемым результатом.

Sub master2()
    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)     / 12
                remainder = 0
            Else
                findFifteen = 1
                remainder = pair.Offset(0, 2)    Mod 12
            End If

            For Each accumulator In Range("A14,     B14, C14, D14, E14, F14, G14, H14, I14, J14, K14, L14")
                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

            Range("E" & found).Value = pair
            found = found + 1
        End If
    Next pair

    Application.ScreenUpdating = True
End Sub

Пример с ожидаемым результатом.

Согласно моему изображению в Excel, мой макрос должен найти указанные ячейки, которые содержат 15 как последнее число,Ячейка B30 имеет номер 7-15.Мне нужен макрос, чтобы перейти в ячейку ниже (B31 и использовать число 1 в этом примере), а затем выполнить поиск в следующем диапазоне ячеек: E1: E12, чтобы найти 1 (ячейка E1).Найдя, поместите 7-15 и увеличьте последнюю цифру на 1 (чтобы она стала 7-16) в соседней ячейке справа (F1).Сделайте то же самое со всеми ячейками: B30, F30 и J30, но только если они содержат 15 (1-15 или 7-15 и т. Д.) В качестве последнего числа.После этого удалите все содержимое в ячейках B30, C30, D30.В моем листе Excel есть два примера, где должно происходить одно и то же.

excel image

1 Ответ

0 голосов
/ 14 ноября 2018

Как я уже сказал, я не могу следить за тем, что вы делаете, но это даст вам "7-16" в E1, если B30 содержит 7-15 (и аналогично для других ячеек).Я удалил большую часть вашего кода, поэтому не знаю, полный ли это ответ

Sub master2()

Dim pair As Range, found As Variant, v As Variant

For Each pair In Range("B30, F30, J30")
    If Right(pair, 2) = "15" Then
        v = Split(pair, "-")
        found = Application.Match(pair.Offset(1),Range("E1:E12"), 0)
        If IsNumeric(found) Then
            Range("F1:F12").Cells(found).Value = v(0) & "-" & v(1) + 1
        End If
    End If
Next pair

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