2015-11-10 4 views
1

У меня есть макрос, который заполняет значения в столбце G (начиная с ячейки G2) на основе пользовательских подсказок для начального значения, а затем повторяется до конца столбца, добавляя 10 к значение каждый раз.Повторить или изменить значение ячейки на основе другой ячейки

Sub Macro1() 

Dim TagName As String 
Dim TagNum As Long, k As Long 

' Prompts user for tag names/numbers 
TagName = InputBox("What is the product tag name? Ex. APPLE") 
TagNum = InputBox("What is the starting tag #? Ex. 10") 


' Set values in column G, up to last row in column J 
k = 0 
With ActiveSheet 
    LastRow = .Cells(.Rows.Count, "J").End(xlUp).Row 
End With 

With ActiveSheet.Range("G2") 
    For i = 1 To LastRow Step 1 
     .Item(i + 0) = TagName & "_" & TagNum2 + k 
     k = k + 10 
    Next 
End With 

End Sub 

Это отлично работает, если колонка C имеет уникальные значения в каждой строке, например: Before

Но если значение в повторах колонке C, я хочу того же в графе G, как это: enter image description here

+0

Будет ли повторяющиеся строки всегда быть последовательными? Если это так, создайте логику ветвления. Скажите «Если [ячейка в C в текущей строке] = [ячейка в C в строке выше], тогда [ячейка в G в текущей строке] = [ячейка в G в строке выше] Else [ячейка в C в текущей строке] = [ Текущая формула] Конец Если « –

+0

Да повторяющиеся строки в« Столбец С »будут последовательными, но не названными так аккуратно с номерами в конце. Другими словами, если «Параметр 5» повторяет 4 раза, вы никогда не увидите «Параметр 1» после этого – wongnog

ответ

1

Я думаю, что есть пара ошибок. Это то, что вы пытаетесь?

Sub Sample() 
    Dim TagName As String, sTag As String 
    Dim TagNum As Long, k As Long 

    ' Prompts user for tag names/numbers 
    TagName = InputBox("What is the product tag name? Ex. APPLE") 
    TagNum = InputBox("What is the starting tag #? Ex. 10") 

    With ActiveSheet 
     LastRow = .Cells(.Rows.Count, "J").End(xlUp).Row 
     k = TagNum 
     .Range("G2").Value = TagName & "_" & k 
     For i = 3 To LastRow 
      '~~> Increment k only if the values do not match 
      If .Range("C" & i).Value <> .Range("C" & i - 1).Value _ 
      Then k = k + 10 

      .Range("G" & i).Value = TagName & "_" & k 
     Next 
    End With 
End Sub 

Я выбрал "Яблоко" и "10" в полях ввода

enter image description here

+0

Я не уверен, будет ли этот код работать, так как он не имеет 'k = k + 10' в конце Цикл 'For'. Мне нужно это, чтобы значения увеличивались на 10. Например, если пользователь вводит '100' в качестве начального« TagNum », то значения в вашем примере выше должны быть« Apple_100' 'Apple_110''''''110' и т. Д. – wongnog

+0

Вы всегда хотите увеличить на 10? –

+0

Да всегда на 10. Также какая строка определяет первую ячейку в колонке G? – wongnog

Смежные вопросы