ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 6103|回复: 13

[求助] 如何实现“一对多”跨表的条件数据引用

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-1-1 10:06 | 显示全部楼层 |阅读模式
首先祝大家节日快乐!

向节日里仍在论坛值守的众大侠致敬!
也给自己这个仍在工地战斗的苦逼工仔点个赞!

现有如下难题请求大家帮忙解决,
先在这里谢谢大家的热心解答!
谢谢!

现有日常费用报销工作表一批(各月份),
工作表名称以“年月日人名”命名,
格式统一,但工作表数量会不定期增加。

目标:
1、将工作表(名称带日期的)内的数据全部引用到当月的现金日记账总表(201609现金日记账)。
   并实现数据汇总。
2、将工作表(名称带日期的)内的数据根据种类代码分别引用到相应的工作表内,
   并实现数据汇总。
   例如,种类代码为A01的相应行的数据,引用到工作表“A01费用汇总”,
         种类代码为B02的相应行的数据,引用到工作表“B02费用汇总”
          种类代码为C03的相应行的数据,引用到工作表“C03费用汇总”
          备注栏内为Z3的相应行的数据,引用到工作表“Z3专项费用汇总”
3、工作表(名称带日期的)数量增加后,总表数据及各个分类汇总表的数据自动更新。

附件为模板,


还请大神对处理方法稍做解释,
因为本人还要将解决方法稍做扩展,增加种类代码等,
并移植到其他月份的数据中。

再次感谢热心解答!

0010.jpg
0013.jpg

201609现金流水账模板.rar

66.69 KB, 下载次数: 32

TA的精华主题

TA的得分主题

发表于 2017-1-1 10:23 | 显示全部楼层
还是举两个例子说明,比较好理解,毕竟别人不一定了解你的行业特点............................................

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-1-1 10:47 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-1-1 11:11 | 显示全部楼层
小花鹿 发表于 2017-1-1 10:23
还是举两个例子说明,比较好理解,毕竟别人不一定了解你的行业特点...................................... ...

此贴中的附件为模拟效果,
并附加了简短说明。

为了更容易区别数据,
不同类别的数据用了不同颜色,
处理时不用增加颜色。

祝节日快乐!
多谢热心相助!


201609现金流水账模板A.rar

76.46 KB, 下载次数: 55

TA的精华主题

TA的得分主题

发表于 2017-1-1 12:45 | 显示全部楼层
看表格看的眼花缭乱,大体意思好像是这样:每个人发生的费用先计入日记账,在按支付凭证的类别(R01 A01 B02 C03 Z3好像有管理费,制造费呀,好像是生产型企业)细分一下记个账,最后汇总一下。不难呀。

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-1-1 13:05 | 显示全部楼层
Kaohsing 发表于 2017-1-1 12:45
看表格看的眼花缭乱,大体意思好像是这样:每个人发生的费用先计入日记账,在按支付凭证的类别(R01 A01 B0 ...

就是这个意思,
关键是个人不是搞文职的。

还请老师热心相助!

TA的精华主题

TA的得分主题

发表于 2017-1-1 13:16 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
liurunxing 发表于 2017-1-1 13:05
就是这个意思,
关键是个人不是搞文职的。


最好把 R01 A01 B02 C03 Z3这些代码换成真实的会计科目,否则代码出现大量的  If Not st.Name Like "*汇总" And Not st.Name Like "*日记账" Then,换成具体的费用名字。大家也就不再琢磨着写代码。

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-1-1 13:30 | 显示全部楼层
本帖最后由 liurunxing 于 2017-1-1 13:51 编辑
Kaohsing 发表于 2017-1-1 13:16
最好把 R01 A01 B02 C03 Z3这些代码换成真实的会计科目,否则代码出现大量的  If Not st.Name Like "* ...

多谢指导!
以前是个搞机械的,
现在拉到工地帮忙记这个。
对会计科目也不了解,
自己想着字符比汉字好处理,
就随意编个代码区分费用,

至于备注栏里的“Z3”代码,
是要单列出一个项目费用。



TA的精华主题

TA的得分主题

 楼主| 发表于 2017-1-1 13:53 | 显示全部楼层
本帖最后由 liurunxing 于 2017-1-1 13:56 编辑
Kaohsing 发表于 2017-1-1 13:16
最好把 R01 A01 B02 C03 Z3这些代码换成真实的会计科目,否则代码出现大量的  If Not st.Name Like "* ...

模板文件已修改,
不知我理解的对不对?
现金日记账那个名称没有改,
因为有个年度汇总文件,
引用了表内的数据。



201609现金流水账模板B.rar

76.43 KB, 下载次数: 60

TA的精华主题

TA的得分主题

发表于 2017-1-1 14:42 | 显示全部楼层
登记日记账代码
  1. Dim d
  2. Sub 汇总费用()
  3.   Dim st As Worksheet
  4.   Dim arr
  5.   Dim i%, j%, m%
  6.   Dim iRow%
  7. Dim brr(1 To 500, 1 To 7)
  8. Set d = CreateObject("scripting.dictionary")
  9.    
  10.   For Each st In Worksheets
  11.     If Not st.Name Like "*汇总" And Not st.Name Like "*日记账" Then
  12.      arr = st.Range("a1").CurrentRegion
  13.        If IsEmpty(arr) Then GoTo ghb
  14.         For i = 4 To UBound(arr)
  15.           If arr(i, 1) <> "" And arr(i, 1) <> "本 单 汇 总" Then
  16.                d(arr(i, 3)) = arr(i, 1) & vbTab & arr(i, 2) & vbTab & arr(i, 3) & vbTab & arr(i, 4) & vbTab & arr(i, 5) & vbTab & arr(i, 6) & vbTab & arr(i, 7)
  17.                m = m + 1
  18.              For j = 1 To 7
  19.                brr(m, j) = arr(i, j)
  20.             Next
  21.          End If
  22.     Next i
  23.      End If
  24.     Next
  25. ghb:
  26.     iRow = Sheets("201609现金日记账").Cells(Rows.Count, "a").End(xlUp).Row + 1
  27.     Sheets("201609现金日记账").Range("a" & iRow).Resize(m, 7) = brr
  28.     For i = 4 To Sheets("201609现金日记账").Cells(Rows.Count, "a").End(xlUp).Row - 1
  29.        If i = 4 Then Cells(4, 8).Formula = "=rc[-2]-rc[-1]"
  30.           Cells(i + 1, 8).Formula = "=r[-1]c-rc[-1]"
  31.     Next

  32. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-19 16:31 , Processed in 0.038071 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表