2015-08-11 4 views
0

поле «Required» это тот, который нуждается в заполнении,Loop через строки, используя Excel VBA, чтобы установить увеличивающийся счетчик

  • Для каждого уникального серийного номера «REQUIRED» увеличивается на 1 ТОЛЬКО ЕСЛИ снимался «*». в VBA.

Это то, на что это должно быть похоже.

http://s2.postimg.org/nketog5t5/table.jpg

Serial Number REQUIRED Starred SEQ_NO 
040846/Z/96/C 1 * 1 
040846/Z/96/C 2 * 2 
040846/Z/96/C   3 
042190/Z/96/F 1 * 1 
042368/Z/97/B 1 * 1 
042368/Z/97/B   2 
042368/Z/97/B 2 * 3 
042368/Z/97/B   4 
042368/Z/97/B 3 * 5 
042368/Z/97/B   6 
042368/Z/97/B   7 
042368/Z/97/B   8 
047608/Z/96/B 1 * 1 
047608/Z/96/B   2 
047675/Z/96/D 1 * 1 
047675/Z/96/D 2 * 2 
047675/Z/96/D   3 
+0

Я не думаю, что вам нужно VBA для этого. Я думаю, вы можете это сделать, используя формулу 'COUNTIFS()'. – Marc

+0

Не могли бы вы быть немного более ясными? У вас есть увеличенные числа на некоторые значения без «*». – GisMofx

ответ

2

Вставить эту формулу вниз колонку, которую вы пытаетесь заполнить. Вы можете немного настроить его, чтобы скрыть нули, если вам это интересно.

=COUNTIFS($A$2:A2,A2,$C$2:C2,"*") 

Обратите внимание на твердые ссылки относительно относительных ссылок в этой формуле и убедитесь, что ваши записи совпадают с ними.

+0

Хороший, спасибо за это! –

1

Пожалуйста, попробуйте это

Sub increment() 
Dim prevalue As String 
Dim curvalue As String 
Dim lstrow As Long, i As Long, j As Integer 

lstrow = Range("A" & Sheets("Sheet1").Rows.Count).End(xlUp).Row 
j = 0 

For i = 2 To lstrow 
    curvalue = Range("A" & i).Value 
    If curvalue = prevalue And Range("A" & i).Offset(0, 2).Value = "*" Then 
     j = j + 1 
     Range("A" & i).Offset(0, 1).Value = j 
    ElseIf curvalue <> prevalue And Range("A" & i).Offset(0, 2).Value = "*" Then 
     j = 1 
     Range("A" & i).Offset(0, 1).Value = j 
    End If 
    prevalue = curvalue 
Next i 
End Sub 
+0

Thk man, я тоже посмотрю на это !! –

+0

помогло вам – Nitish

+0

Очень понравилось, спасибо Nitish, этот код был очень полезен для меня, чтобы узнать, как делать такие вещи, как prevalue Offset, который я не был уверен, как это было сделано. –