2014-03-06 3 views
-1

У меня есть столбец C в поле, заполненном Excel, отсортированное по возрастанию. Я хочу написать в колонке B, это число в другом форматеVBA генерировать символы A B C D

Например, я это то, что мне нужно получить, но не имеют ни малейшего понятия о том, как я могу это сделать

ColumB ColumC  
0001-A  1 
0001-B  1 
0002-A  2 
0002-B  2 
0002-C  2 

Чтобы 0001- я использую Format(Cells(c,3),"0000") & "-" Но я изо всех сил, чтобы заполнить A B C D и т.д .. для каждой строки

Спасибо

ответ

0
Sub Macro3() 
Dim cl As Range 
myinteger = 64 
currentinteger = 0 
currentvalue = Range("C1").Value 

For Each cl In Range("C1:C5") 

    If cl.Value <> currentvalue Then 
     currentinteger = 1 
     currentvalue = cl.Value 
    Else 
     currentinteger = currentinteger + 1 
    End If 

    cl.Offset(0, -1).Value = Format(cl.Value, "0000") & "-" & Chr(myinteger + currentinteger) 


Next cl 

End Sub 
+0

Genius, который отлично работает – sharkantipav

0

Попробуйте это:

Sub main() 

Dim i As Integer 
Dim j As Integer 
Dim flagSame As Boolean 


For i = 1 To 5500 

    flagSame = True 
    j = 1 
    While flagSame = True 
     Cells(i + j - 1, 2) = "000" + Strings.Trim(Str(Cells(i + j - 1, 3))) + "-" + Strings.Trim(Chr(j + 64)) 
     If Cells(i + j, 3) <> Cells(i + j - 1, 3) Then 
      flagSame = False 
      i = i + j - 1 
     Else 
      j = j + 1 
     End If 

    Wend 

Next i 


End Sub 

enter image description here

Также здесь есть статья, которую я написал о обработки строк в моем блоге, это может помочь Excel VBA String Processing and Manipulation

+0

Мне не нравятся жестко запрограммированные решения, плюс он вводит 4-й символ как '0', который не соответствует запросам OP. –

+0

Что вы подразумеваете под жестким кодом? :) – Pedrumj

+0

Это выглядит нормально ... но я хочу пройти гораздо больше, чем 2 ... моя колонка переходит на 5500 ... и единственный способ распознать дубликаты - это буквы ABCD etcc – sharkantipav

1

Попробуйте эту формулу в B1 скопирована вниз:

= ТЕКСТ (C1, "0000") & "-" & LEFT (АДРЕС (1, COUNTIF (C $ 1: C1, C1), 4,1), 1)

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