Excel精英培训网

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

[已解决]如何快速简便实现

[复制链接]
发表于 2013-3-16 14:35 | 显示全部楼层 |阅读模式
想实现的功能是:原表中有N个不同的货号,每个客户对应有数量和金额。(有N行与N列)
我想要的效果是把每个客户数量和金额不为0的货号,数量和金额取出来。

最佳答案
2013-3-16 21:23
华润万家.rar (53.28 KB, 下载次数: 21)

华润万家.rar

46.31 KB, 下载次数: 26

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-3-16 21:00 | 显示全部楼层
回复

使用道具 举报

发表于 2013-3-16 21:22 | 显示全部楼层
  1. Sub 数据汇总()
  2.     Dim arr, arr2()
  3.     Dim i&, j&, l&
  4.     arr = Range("a1").CurrentRegion
  5.     i = UBound(arr, 2) * UBound(arr) / 2
  6.     ReDim arr2(1 To i, 1 To 4)
  7.     i = 0
  8.     For l = 2 To UBound(arr, 2) - 1 Step 2
  9.         i = i + 1
  10.         arr2(i, 1) = arr(2, l)
  11.         For j = 4 To UBound(arr)
  12.             If arr(j, l) > 0 And arr(j, l + 1) > 0 Then
  13.                 arr2(i, 2) = arr(j, 1)
  14.                 arr2(i, 3) = arr(j, l)
  15.                 arr2(i, 4) = arr(j, l + 1)
  16.                 i = i + 1
  17.             End If
  18.         Next
  19.         i = i - 1
  20.     Next
  21.     With Worksheets("要实现效果")
  22.         .UsedRange = ""
  23.         .Range("a1").Resize(i, 4) = arr2
  24.         .Columns("a:e").AutoFit
  25.         With .Range("a:a").SpecialCells(xlCellTypeConstants)
  26.             .Font.Bold = True
  27.             .Font.Color = vbBlue
  28.         End With
  29.     End With
  30. End Sub
复制代码
回复

使用道具 举报

发表于 2013-3-16 21:23 | 显示全部楼层    本楼为最佳答案   
华润万家.rar (53.28 KB, 下载次数: 21)
回复

使用道具 举报

发表于 2013-3-16 21:33 | 显示全部楼层
函数就没去想了,习惯了V的思路。
回复

使用道具 举报

发表于 2013-3-17 14:30 | 显示全部楼层
         
回复

使用道具 举报

发表于 2013-3-18 08:58 | 显示全部楼层
用数组公式:
华润万家=INDEX(原表!A:A,SMALL(IF(原表!$B$5:$B$453>0,ROW($5:$453),4^8),ROW(A1)))&""
           =INDEX(原表!B:B,SMALL(IF(原表!$B$5:$B$453>0,ROW($5:$453),4^8),ROW(A1)))&""
           =INDEX(原表!C:C,SMALL(IF(原表!$B$5:$B$453>0,ROW($5:$453),4^8),ROW(A1)))&""
航海路运动=INDEX(原表!A:A,SMALL(IF(原表!$D$5:$D$453>0,ROW($5:$453),4^8),ROW(A4)))&""
               =INDEX(原表!D:D,SMALL(IF(原表!$D$5:$D$453>0,ROW($5:$453),4^8),ROW(A4)))&""
               =INDEX(原表!E:E,SMALL(IF(原表!$D$5:$D$453>0,ROW($5:$453),4^8),ROW(A4)))&""
其余类推。
回复

使用道具 举报

 楼主| 发表于 2013-3-18 16:14 | 显示全部楼层
hwc2ycy 发表于 2013-3-16 21:23
直接点 汇总 按钮

但是为0的数值我是不需要的。
回复

使用道具 举报

发表于 2013-3-18 16:17 | 显示全部楼层
lhyan0010 发表于 2013-3-18 16:14
但是为0的数值我是不需要的。

为0的不是没显示出来嘛。
回复

使用道具 举报

 楼主| 发表于 2013-3-18 16:40 | 显示全部楼层
ppp710715 发表于 2013-3-18 08:58
用数组公式:
华润万家=INDEX(原表!A:A,SMALL(IF(原表!$B$5:$B$453>0,ROW($5:$453),4^8),ROW(A1)))&""
   ...

老师能不能解释下这个函数的意思。看着那么多(),好晕
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 20:49 , Processed in 0.728898 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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