用VBA实现Excel中数据的提取并且汇总 50

我想用图1的数据源自动生成图2的表格,能否用VBA实现?麻烦传一下代码,谢谢... 我想用图1的数据源自动生成图2的表格,能否用VBA实现?麻烦传一下代码,谢谢 展开
 我来答
阳光上的桥
2019-10-16 · 知道合伙人软件行家
阳光上的桥
知道合伙人软件行家
采纳数:21424 获赞数:65789
网盘是个好东东,可以对话和传文件

向TA提问 私信TA
展开全部

例子数据源:

程序代码:

运行结果:

是不是很完美,程序文本:

Option Explicit


Sub 转换()

    Dim a1, a2(1 To 1000, 1 To 100), i, j, x, y, m, n

    Set x = CreateObject("Scripting.Dictionary")

    Set y = CreateObject("Scripting.Dictionary")

    a1 = Range("a1").CurrentRegion

    For i = 1 To UBound(a1)

        If a1(i, 1) = "价格" Then

            If Not y.Exists(a1(i, 2)) Then

                a2(1, y.Count + 2) = a1(i, 2)

                y.Add a1(i, 2), y.Count + 2

            End If

            n = y(a1(i, 2))

        Else

            If Not x.Exists(a1(i, 1)) Then

                a2(x.Count + 2, 1) = a1(i, 1)

                x.Add a1(i, 1), x.Count + 2

            End If

            m = x(a1(i, 1))

            a2(m, n) = a1(i, 2)

        End If

    Next i

    Range("d1").Resize(x.Count + 1, y.Count + 1) = a2

End Sub

追问
下标越界呢?
追答
先估算一下数据,修改一下程序中的1000、100大一些
Kevin_0010
2019-10-16 · TA获得超过537个赞
知道小有建树答主
回答量:540
采纳率:82%
帮助的人:23.3万
展开全部

用公式可实现,G1使用公式

=INDEX($B$1:$B$20,MATCH(E$1,$B$1:$B$20,0)+ROW(1:1))

向右拉向下拉即可,支持多客户多产品,产品排序数量相同的话(不同需要加条件)。

以上希望能帮上忙!

更多追问追答
追答
请问问题解决了吗?
问题解决的话麻烦帮忙采纳点赞!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
侯玉川
科技发烧友

2019-10-16 · 教育领域创作者
个人认证用户
侯玉川
采纳数:2041 获赞数:3566

向TA提问 私信TA
展开全部
可以的。给出的这个看起来还是比较规律的。公式都可以实现。当然,VBA更能实现了。
公式实现的话,可以使用偏移的办法处理。
其实VBA最方便的实现方法,也是偏移的方法。
追问
能否发一下VBA的代码,谢谢
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式