方法如下:
先制作空表格:把本文所附的只有2行的表頭打開,下拉菜單“編輯”、點擊“定位”在引用位置欄輸入“B2:H1001”、按“確定”、再下拉菜單“編輯”、點擊“填充”、“向下填充”空表格制作完成。(這是大量填充單元格的最快方法)。然后把姓名清單從A2單元格開始拷貝至A列。這樣檢索程序操作就完成了。用該檢索程序,在奔III 733機器上1秒鐘內便完成了783人的重名檢索。
下面簡單介紹B2至H2單元格的公式,B2單元格“=IF(A2=0,0,SUBSTITUTE(A2," ",""))”中SUBSTITUTE函數是去掉A2單元格中的名字的前、后、中間的空格,C2單元格“=IF(B2=0,0,IF(ISERROR(VLOOKUP(B2,B3:B$1001,1,FALSE))=TRUE,0,ROW(A1)))” 中ISERROR(VLOOKUP(B2,B3:B$1001,1,FALSE))=TRUE,0,ROW(A1))即如在B3到B1001單元格中找不到與B2相同的姓名時為零,否則為從第1個姓名開始計數的行數。意即B3往下有重名時標明行數,否則為零。D2單元格“=LARGE(C:C,ROW(A1))”就是把重名所在行的行數從大到小進行排列。E2單元格“=IF(D2=0,0,INDEX(B$2:B$1001,D2))”就是在B列根據D2單元格標明的行數查找重名的姓名。F2單元格“=IF(E2=0,0,IF(ISERROR(VLOOKUP(E2,E3:E$1001,1,FALSE))=TRUE, ROW(A1),0))”與C2單元格的公式相似,只是根據條件取舍相反。即讓已檢出的重名只出現一次。G2單元格的公式“=IF(ROW(A1)>COUNTIF(F:F,">0"),0,INDEX(E$2:E$1001,LARGE(F:F,ROW(A1))))” 就是對F列標明的行數,按大到小進行排列并在E列查找重名的姓名。H2單元格的公式“=IF(G2=0,0,COUNTIF(B:B,G2))”就是對B列在G列列出的重名進行計數。下表為工作表的前三行。
此程序稍作改變便能用來統計姓氏的頻數與頻率。
方法如下:
先制作空表格:把本文所附的只有4行的表頭打開,用上述方法填充B4:l1002單元格.再把姓名清單從A3單元格開始拷貝至A列。這樣姓氏的頻數與頻率統計程序操作就完成了。下表為工作表的前五行。
用該程序對筆者所在單位783人統計有160個姓氏,張姓最多有95人出現頻率為12.1%。樣本太少不具全國姓氏的頻數與頻率統計上的意義,但似乎張姓為中國第一大姓。B到F列的公式與重名檢索工作表的公式極相似,G到K列的公式在筆者的“排序與篩選”一文中有詳細說明。
筆者在奔III 733計算機上制作一張統計10000人姓氏頻數與頻率的空表需時6分37秒,復制這樣一張空表瞬時就能完成,在空表上填充10000人的姓名后統計姓氏頻數與頻率的時間為2分42秒。填充完后文件大小為4996k。筆者所以測試以上時間是筆者有一個強烈的愿望:把程序用于全國千分之一到萬分之一抽樣人口即12萬到120萬人的姓氏頻數與頻率的統計。筆者在此請求網友支持,提供你能到的某一群體人員的姓氏或姓名樣本,和所在省市。筆者每收集到1萬個樣本便在網站公布一次姓氏頻數與頻率的統計結果。
我的Email地址:wenou@public3.bta.net.cn
點擊此處下載示范工作簿