Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4620|回复: 17

[已解决]怎么求和?

[复制链接]
发表于 2017-5-15 11:56 | 显示全部楼层 |阅读模式
本帖最后由 dfsfsa 于 2017-5-18 12:26 编辑

E列有重复关键字1,I列包含字母a和b的关键字2,把关键字1和关键字2对应的数字按顺序写在K列到N列,求和写在O列到Q列,效果请看表1

最佳答案
2017-5-15 14:29
  1. Sub aaa()
  2. Dim arr, brr, r1&, r2&, c1&, c2
  3. arr = Range("e6:i" & [i65536].End(3).Row)
  4. ReDim brr(1 To UBound(arr) * 2, 1 To 7)
  5. r1 = 1: r2 = 1: c2 = 2
  6. For i = 1 To UBound(arr)
  7.   If InStr(arr(i, 5), "a") Then
  8.     c1 = c1 + 1
  9.     If c1 = 3 Then
  10.       c1 = 1
  11.       r1 = r1 + 4
  12.     End If
  13.     brr(r1, c1) = arr(i, 3)
  14.     brr(r1, 5) = brr(r1, 5) + arr(i, 3)
  15.     brr(r1, 7) = brr(r1, 7) + arr(i, 3)
  16.   End If
  17.   If InStr(arr(i, 5), "b") Then
  18.     c2 = c2 + 1
  19.     If c2 = 5 Then
  20.       c2 = 3
  21.       r2 = r2 + 4
  22.     End If
  23.     brr(r2, c2) = arr(i, 3)
  24.     brr(r2, 6) = brr(r2, 6) + arr(i, 3)
  25.     brr(r2, 7) = brr(r2, 7) + arr(i, 3)
  26.   End If
  27. Next i
  28. [k6].Resize(IIf(r1 > r2, r1, r2), 7) = brr
  29. End Sub
复制代码
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2017-5-15 12:56 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2017-5-15 13:53 | 显示全部楼层
回复

使用道具 举报

发表于 2017-5-15 14:18 | 显示全部楼层
包含字母a对应数据1、包含字母b对应数据1,都只有2个吗?2个就是2列,如果是N个不是要N列吗?excel2003只有256列,数据多了表装不了,数据少可以用公式。
回复

使用道具 举报

发表于 2017-5-15 14:29 | 显示全部楼层    本楼为最佳答案   
  1. Sub aaa()
  2. Dim arr, brr, r1&, r2&, c1&, c2
  3. arr = Range("e6:i" & [i65536].End(3).Row)
  4. ReDim brr(1 To UBound(arr) * 2, 1 To 7)
  5. r1 = 1: r2 = 1: c2 = 2
  6. For i = 1 To UBound(arr)
  7.   If InStr(arr(i, 5), "a") Then
  8.     c1 = c1 + 1
  9.     If c1 = 3 Then
  10.       c1 = 1
  11.       r1 = r1 + 4
  12.     End If
  13.     brr(r1, c1) = arr(i, 3)
  14.     brr(r1, 5) = brr(r1, 5) + arr(i, 3)
  15.     brr(r1, 7) = brr(r1, 7) + arr(i, 3)
  16.   End If
  17.   If InStr(arr(i, 5), "b") Then
  18.     c2 = c2 + 1
  19.     If c2 = 5 Then
  20.       c2 = 3
  21.       r2 = r2 + 4
  22.     End If
  23.     brr(r2, c2) = arr(i, 3)
  24.     brr(r2, 6) = brr(r2, 6) + arr(i, 3)
  25.     brr(r2, 7) = brr(r2, 7) + arr(i, 3)
  26.   End If
  27. Next i
  28. [k6].Resize(IIf(r1 > r2, r1, r2), 7) = brr
  29. End Sub
复制代码

评分

参与人数 1 +1 收起 理由
dfsfsa + 1 很给力

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2017-5-15 14:39 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2017-5-15 14:40 | 显示全部楼层
pengyx 发表于 2017-5-15 14:18
包含字母a对应数据1、包含字母b对应数据1,都只有2个吗?2个就是2列,如果是N个不是要N列吗?excel2003只有 ...

只有2个,是固定的
回复

使用道具 举报

 楼主| 发表于 2017-5-15 14:44 | 显示全部楼层

用字典解决是不是简单点,能不能让我学习一下字典?
回复

使用道具 举报

发表于 2017-5-15 14:48 | 显示全部楼层
dfsfsa 发表于 2017-5-15 14:44
用字典解决是不是简单点,能不能让我学习一下字典?

你这个不太适用字典,你再发个其他的要求我来看一下,字典很简单的。
回复

使用道具 举报

 楼主| 发表于 2017-5-15 17:20 | 显示全部楼层
本帖最后由 dfsfsa 于 2017-5-18 12:27 编辑
大灰狼1976 发表于 2017-5-15 14:48
你这个不太适用字典,你再发个其他的要求我来看一下,字典很简单的。

关键字增加2行。看看代码怎么修改?

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-27 00:25 , Processed in 0.392455 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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