好吧,我已經用盡了我對Excel VBA編碼的微弱知識,並且一直無法找出這個解決方案。試圖找到範圍內字符串的最大值
我有一個單列值範圍作爲表的一部分。在此列中的值是連續串的羣體,如:
ABC-001
ABC-002
XYZ-001
EFDDGE-001
ABC-003
XYZ-002
ABC-004
我需要做的是下一行是在什麼組是下一個價值分配一個值。
實施例:
- 如果下一項目是「ABC」項,我需要在列中的值是
ABC-005
- 如果下一項目是「EFDDGE」項,我所需要的在該列的值是
EFDDGE-002
等
在列中的值是按升序排列,按組(即XYZ-005
絕不會XYZ-003
之前)。
我一直在用Range.Find
方法,但我似乎無法讓它正常工作。
下面是表的樣品部分的屏幕截圖: (編輯:顯然是因爲我的「名聲不是10或更高,我不能發表圖片)
嘗試圖片此係列列:
[下一頁ID] [項目編號] [說明] [配置] [原創] [最後] [重量]
在回答一些問題: 是的,我確實想在表中下一個可用行中添加項目ID。
根據「處理」值,「項目ID」的組部分由與「原始」或「最終」列中的條目相關的「位置ID」表中的VLookup確定,具體取決於「處置」值。
從上面的屏幕截圖中可以看到,我實際上設法實現了一種確定「Next ID」的可行方法,然後讓我的VBA userform代碼複製該值並將其粘貼到相鄰的「Item ID」柱。它有效,但它很醜。這裏是膨脹公式(深呼吸):
= IF(NOT(ISERROR(CONCATENATE(VLOOKUP(IF(NOT(ISBLANK(G13)),G13,F13),LocationID,2,FALSE) - 「,TEXT(SUMPRODUCT((ItemID> VLOOKUP(IF(NOT(ISBLANK(G13)),G13,F13),LocationID,2,FALSE))(ItemID < = CONCATENATE(VLOOKUP(IF(NOT(ISBLANK(G13 )),G13,F13),LocationID,2,FALSE), 「 - 999」)))+ 1, 「000」)))),(CONCATENATE(VLOOKUP(IF(NOT(ISBLANK(G13)),G13, (ItemID> VLOOKUP(IF(NOT(ISBLANK(G13)),G13,F13),LocationID,2,FALSE)(ItemID < = F13),LocationID,2,FALSE) CONCATENATE(VLOOKUP(IF(NOT(ISBLANK(G13)),G13,F13),LocationID,2,FALSE),「 - 999」)))+ 1,「000」))),「」)
所以......我強迫這個工作,但我在想(跳)用戶表單中的一小部分VBA代碼可以避免使用這種混亂的方法。
順便說一句,多虧了你們所有人的關注,並提出了相關的問題並提供了可能的解決方案。 - 比爾
我認爲你不需要這個vba。這是excel中的一個自動函數。檢查了這http://www.youtube.com/watch?v=CePq6bnC5oM –
@ bto.rdz這不適用於E2007(假設它根本不工作,因爲數據不是嚴格的數字)。 –
你怎麼知道要找哪個組? – tigeravatar