2013-03-21 91 views
0

我需要爲6000多條記錄創建一個新的產品代碼。爲了做到這一點,並在將來破譯它,我需​​要從舊代碼到新代碼的公式。excel在所有字母數字字符串上加1 1

樣本代碼:

yas111 
bd224 
sax112 
sd00015 
sp00114 

如果我的計算公式爲+1,最終的結果是shoulb:

zbt222 
ce335 
tby223 
te11126 
tq11225 

數字會+1,而字母將遞增到字母表中的一個字母。 我試過替代功能,它的工作。但是如果有一個已經使用的號碼,它不能同時讀取。例如:

Substitute(substitute(a1,"0","5"),"5","0") 

它只會讀1 結果將是

0 = 0 
5 = 0 

,但我試圖得到這樣的結果:

0 = 5 
5 = 0 
+0

你怎麼能確保他們不會與現有的代碼發生衝突? – 2013-03-21 04:03:03

+1

之後會有什麼zzz999? – teylyn 2013-03-21 05:48:09

回答

1

爲此純Excel公式將在我看來無法管理複雜。最好的辦法是TI使用VBA UDF

Function IncrCode(rng As Range) As Variant 
    Dim strOld As String, strNew As String 
    Dim i As Long 

    strOld = rng.Cells(1, 1).Value 
    strNew = "" 
    For i = 1 To Len(strOld) 
     strNew = strNew & Chr$(Asc(Mid$(strOld, i, 1)) + 1) 
    Next 
    IncrCode = strNew 
End Function 

這樣稱呼它

=IncrCode(A1) 

如果A1 = yas111這個結果將是zbt222

請注意,根據你的問題,所有字符都遞增到下一個ascii字符,例如
9 - >:
z - >{
Z - >[

+0

謝謝,我的壞.. 9應該是0.也許應該有9和z的例外。我會怎麼做? – 2013-03-21 08:57:54

+0

簡單地分開'asc(...)'位,對極限情況進行測試並返回所需的字符。如果卡住了,請給它一個回去併發回 – 2013-03-21 09:16:18

+0

我不知道如何使用vba udf。我不是程序員。我嘗試過,但無法弄清楚。你能幫我解決嗎?或者有可能讓你在這裏發佈文件? – 2013-03-21 13:33:08

0

你需要的是一個單一的字符這將永遠不會被使用。假設它是&

有了這些從來沒有使用的字符,然後你可以做這樣的:

變化的所有個Z到&。
改變這一切你個Y到Z
更改所有X的給Y.
更改所有W公司的爲X.

。等等。

更改所有&的爲0。

+0

我想有人低估了我的一個很好的理由......? – 2013-03-21 04:40:17

+0

感謝您的幫助。但不工作......當我將w分配給x,並將x分配給y時。結果是w = y x = y – 2013-03-21 08:51:41

+1

你必須以相反的順序來完成。一旦你把所有的Z變成了&,你就知道沒有Z.所以將Y's改爲Z是安全的。那麼沒有Y's,所以你可以將X's改爲Y's。等等。一旦你完成了,你可以將那些曾經是Z的那些改成你想要的東西。 – 2013-03-21 14:46:21

相關問題