2013-12-17 4 views
1

Я новичок в программировании макросов в Excel.Макро функции для увеличения значения ячеек EXCEL

До сих пор я был в состоянии создать программу, которая превращает

10.10.10.1 
10.10.10.2 
10.10.10.3 
10.10.10.4 

в

10.10.10.1 
10.10.10.1 
10.10.10.1 
10.10.10.1 
10.10.10.1 
10.10.10.2 
10.10.10.2 
10.10.10.2 
10.10.10.2 
10.10.10.2 

со следующим:

Sub CopyData() 
Dim lRow As Long 
Dim RepeatFactor 

    lRow = 1 
    Do While (Cells(lRow, "A") <> "") 

     RepeatFactor = 5 
     If ((RepeatFactor > 1) And IsNumeric(RepeatFactor)) Then 

      Range(Cells(lRow, "A"), Cells(lRow, "B")).Copy 
      Range(Cells(lRow + 1, "A"), Cells(lRow + RepeatFactor - 1, "B")).Select 
      Selection.Insert Shift:=xlDown 

      lRow = lRow + RepeatFactor - 1 
     End If 

     lRow = lRow + 1 
    Loop 
End Sub 

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

Вот что у меня есть:

enter image description here

И вот что я хотел бы:

enter image description here

Скажите, пожалуйста, какие функции я должен Google ....

+2

Есть ли причина, по которой вы не можете использовать +? 'value = value + 1'' if value> 14 then value = value-5' – gtwebb

+0

Я представил упрощенную версию моей проблемы. Я увеличиваю третий октет около 1000 IP-адресов, каждая область имеет 16 адресов, а некоторые из 3-х октетов не начинаются с 0, они могут начинаться с 16 или 56 и т. Д. И т. Д. ... следовательно, необходимо для автоматизации этого – Glowie

+0

Это все еще не объясняет, почему вы не можете его автоматизировать с помощью простой инкрементной функции в vba. Поместите его в цикл, и когда вы нажмете максимальное значение, которое хотите увеличить, чтобы просто сбросить переменную, вы храните третий октет в – gtwebb

ответ

3

Вместо использования макроса это можно решить, используя простые формулы ячеек (UDF) и просто скопировать их ,

A1 = 10 
B1 = 10 
C1 = 10+MOD(ROW(),4) 
D1 = 0+INT(ROW()/4) 
E1 = A1 & "." & B1 & "." & C1 & "." & D1 

Затем скопируйте A1: E1 вниз ....

(Примечание: Избегайте макросов Макросы нарушения функционального характера таблицы, непрозрачными (не видно, как данные обрабатываются), часто осложняется (просто попробуйте прочитать код у других) и т. д.)

+0

Это было очень полезно сегодня! – Glowie

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