問題來源
如下兩個(gè)表格:
第一種情況是按姓名排序的,第二種情況姓名未加排序。
兩種情況下,怎樣給相同姓名添加相同編號(hào)?
![]()
今天韓老師給出函數(shù)法與VBA法。
函數(shù)方法
相同姓名有序排列:
1、在A2單元格輸入編號(hào)1;
2、在A3單元格輸入公式:
=IF(B3=B2,A2,A2+1)
該公式的含義是:
如果B3和B2姓名相同,則填寫B(tài)2對(duì)應(yīng)的編號(hào)A2,否則A2+1;

相同姓名凌亂無序排列:
其實(shí)在真正工作中,有序排列的姓名不多,更多的是無序排列。
1、在F2中輸入公式:
=IFERROR(VLOOKUP(G2,IF({1,0},G$1:G1,F$1:F1),2,0),N(F1)+1)
向下填充,即得結(jié)果:
![]()
其中:
IF({1,0},G$1:G1,F$1:F1):
是由IF函數(shù)重新構(gòu)建一動(dòng)態(tài)區(qū)域,該區(qū)域有兩列:
第一列是姓名,起始單元格是G1,結(jié)束單元格隨公式向下填充而擴(kuò)展;
第二列是編號(hào),起始單元格是F1,結(jié)束單元格隨公式向下填充而擴(kuò)展;
公式不管填充到哪一行,該動(dòng)態(tài)區(qū)域的結(jié)束行都是當(dāng)前公式所在行的上一行。
VLOOKUP(G2,IF({1,0},G$1:G1,F$1:F1),2,0):
在上述動(dòng)態(tài)區(qū)域中精確查找姓名對(duì)應(yīng)的編號(hào)。
IFERROR(VLOOKUP(G2,IF({1,0},G$1:G1,F$1:F1),2,0),N(F1)+1):
如果查找姓名G2對(duì)應(yīng)的編號(hào)出錯(cuò),則返回N(F1)+1;
公式向下填充,如果到第12行,則:查找姓名G12對(duì)應(yīng)的編號(hào)出錯(cuò),則返回N(F11)+1。
N函數(shù):
語法:N(VALUE);
功能:將不是數(shù)值的值轉(zhuǎn)換為數(shù)值形式;
不同參數(shù)VALUE,對(duì)應(yīng)的返回值:
![]()
本示例中,N(F1)的返回值是0。
注:無序排列的公式同樣適合有序排列!
VBA法
代碼為:
Sub 編號(hào)()
Dim a As Object, i As Long '創(chuàng)建字典/
Set a = CreateObject("scripting.dictionary")
For i = 2 To Range("b1").CurrentRegion.Rows.Count
If Not a.exists(Cells(i, 2).Value) Then '添加編號(hào)到字典,第一個(gè)編號(hào)不存在),則
k = k + 1 '計(jì)數(shù)
a(Cells(i, 2).Value) = k '給字典key編號(hào),第一個(gè)編號(hào)是1,第二個(gè)編號(hào)是2......
Cells(i, 1) = k '返回給第一列,分組
Else '如果字典(編號(hào))存在
Cells(i, 1) = a(Cells(i, 2).Value) '直接在字典里查詢編號(hào)
End If
Next
End Sub
用法:

本篇成文,特別感謝微信好友?﹏????提供思路!
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.