栏目分类
热点资讯
你的位置:骚波妹影视 > 台灣 拳交 > 推特 文爱 Excel VBA【案例】多文献多责任表数据汇总:职工简历信息批量汇总

台灣 拳交

推特 文爱 Excel VBA【案例】多文献多责任表数据汇总:职工简历信息批量汇总

发布日期:2025-06-28 14:27    点击次数:120

推特 文爱 Excel VBA【案例】多文献多责任表数据汇总:职工简历信息批量汇总

实质撮要推特 文爱

多个文献多个责任表数据汇总字典、数组抽象应用

群众好,我是冷水沏茶。

Hongkongdoll porn videos

今天在论坛上看到一个乞助贴:

[乞助] 伏击乞助乞助 多个职工简历表合并生成一个汇总表

当今有200多个职工的简历信息单表(图1),一东谈主一个文献汇总到一个信息汇总表(图2)。

他的数据表是这么的:

图片

汇总表如下,每东谈主一札记载,也便是把明细表给它改为圭表的二维表:

图片

对于文献汇总合并,咱们共享过案例【文献合并器具】、【Excel表合并】,合并对象齐是圭表的二维表,不适用今天这个案例。

今天这个问题看上去不是很复杂,若是统共东谈主齐是疏通设施,我的敬爱是“父亲”、“母亲”齐是全的,那就可以获胜援用责任表单位格的位置来得回数据。

但我是不太可爱获胜援用单位格地址这种款式的,写死了,机动性就差点,咱们写代码仍是应该尽量商酌变化、膨大、容错、极端情况若何措置等等。

基本想路:

1、指定明细表文献夹,这里咱们默许是跟“汇总表”放在归并个文献夹下。

2、轮回文献夹中每一个文献,若是是Excel文献,咱们就掀开它,把它赋值给责任簿对象wb。

3、咱们再轮回wb中的每个责任表ws,虽说他这个明细表中唯有一个责任表,但很厚情况下并非如斯,可能有其他表,责任表的称号也可能各不疏通,是以咱们要轮回判断哪个责任表是咱们需要汇总的观念责任表。

4、证实明细表格的结构特征,咱们蛊惑两个Range对象,rng1=A4:F5,rng2=A6:F8。

5、咱们轮回rng1,找到“姓名”单位格,再用offset函数取其右侧单位格,职工姓名,咱们把它当作字典的key,用一个数组arr当作item。

6、咱们再区别轮回rng1与rng2,得回各个字段的值,填入arr,再把arr装回字典。

7、把字典的item写入观念责任表“汇总”。

图片

VBA代码

代码见第二条推文。

跋文推特 文爱

1、代码写得比较冗长,我看到有东谈主只写了20几行,主要遴选获胜指定观念数据单位格地址的款式。正如我前边所说,我不太可爱这种款式,从某种经由上来说,镌汰机动性,是以代码很长,也算循规蹈矩吧。2、另外,咱们还商酌了一些极端情况,比如,父亲、母亲唯有一札记载的,大要轨则倒置的,齐不影响取数的准确性。3、昨天的案例【索求最高学历】,有一又友留言,说代码可以简化一下,我接头了一下他的代码,想路真实可以,在此基础上,我再行梳理了一下想路,又精减了几行代码,与我昨天写的代码比较,减少了一泰半:
Sub 最高学历()    Dim ws As Worksheet, lastRow As Integer    Dim arr(), arrEduBg(), dic As Object, dkey As String, dic1 As Object    Set ws = ThisWorkbook.Sheets("信息表")    Set dic1 = CreateObject("Scripting.Dictionary")    Set dic = CreateObject("Scripting.Dictionary")    With ws        lastRow = .UsedRange.Rows.Count        arr = .Cells(2, 1).Resize(lastRow - 1, 3).Value    End With    arrEduBg = Array("高中", "专业", "本科", "硕士", "博士")    For i = 0 To UBound(arrEduBg)        dic1(arrEduBg(i)) = i    Next    For i = 1 To UBound(arr)        If arr(i, 1) <> "" Then            dkey = arr(i, 1)            If Not dic.Exists(dkey) Then                dic(dkey) = Array(arr(i, 1), arr(i, 2), arr(i, 3))            Else                If dic1(arr(i, 3)) > dic1(dic(dkey)(2)) Then                    dic(dkey) = Array(arr(i, 1), arr(i, 2), arr(i, 3))                End If            End If        End If    Next    Sheets("学历表").Cells(2, 1).Resize(dic.Count, 3) = Application.Transpose(Application.Transpose(dic.items))End Sub
好,今天就到这,咱们下期重逢。 本站仅提供存储办事,统共实质均由用户发布,如发现存害或侵权实质,请点击举报。