Excel精英培训网

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

[已解决]根据已知的店铺明细,从表中提取这些店铺的相关数据,求VBA代码,谢谢

[复制链接]
发表于 2015-6-5 11:10 | 显示全部楼层 |阅读模式
本帖最后由 chensir 于 2015-6-5 12:05 编辑

根据“主店表”里店铺名称,从“费用表”里把这些店的数据提取出来,并将值变为负数放在“提取转换表”里
其中“主店表”里店铺名称是变化的,每次变化后按新的店名提取数据。
PS:如果“费用表”里没有“主店表”里店铺名称,就不提取了
最佳答案
2015-6-5 11:54
  1. Sub Macro2()
  2.     With ThisWorkbook
  3.         '高级筛选
  4.         .Sheets("提取转换表").Activate
  5.         .Sheets("提取转换表").Cells.Clear
  6.         .Sheets("费用").Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, _
  7.                                                                CriteriaRange:=Sheets("主店").Range("A1").CurrentRegion, CopyToRange:=Range("A1")
  8.         '乘以-1
  9.         With .Sheets("提取转换表")
  10.             .Cells(1, "X") = -1
  11.             .Cells(1, "X").Copy
  12.             .Range("A1").CurrentRegion.Select
  13.             Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply
  14.             .Cells(1, "X").Clear
  15.             .Columns("A:U").AutoFit
  16.         End With
  17.     End With
  18. End Sub
复制代码

附件.zip

10.8 KB, 下载次数: 5

发表于 2015-6-5 11:45 | 显示全部楼层
录制宏,高级筛选,筛选出的数据区域选择性粘贴,乘以-1,停止录制,结果就出来了,这是个流氓又偷懒的办法
回复

使用道具 举报

发表于 2015-6-5 11:54 | 显示全部楼层    本楼为最佳答案   
  1. Sub Macro2()
  2.     With ThisWorkbook
  3.         '高级筛选
  4.         .Sheets("提取转换表").Activate
  5.         .Sheets("提取转换表").Cells.Clear
  6.         .Sheets("费用").Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, _
  7.                                                                CriteriaRange:=Sheets("主店").Range("A1").CurrentRegion, CopyToRange:=Range("A1")
  8.         '乘以-1
  9.         With .Sheets("提取转换表")
  10.             .Cells(1, "X") = -1
  11.             .Cells(1, "X").Copy
  12.             .Range("A1").CurrentRegion.Select
  13.             Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply
  14.             .Cells(1, "X").Clear
  15.             .Columns("A:U").AutoFit
  16.         End With
  17.     End With
  18. End Sub
复制代码
回复

使用道具 举报

发表于 2015-6-5 12:11 | 显示全部楼层
用数组写入,但是数据不带格式
  1. Sub demo()
  2.     Dim strTxt$, iRow%, i%, j%, arr, brr(1 To 50000, 1 To 20)
  3.     With ThisWorkbook
  4.         strTxt = Application.Phonetic(.Sheets("主店").Range("A2").CurrentRegion.Offset(1, 0))
  5.         With .Sheets("费用")
  6.             arr = .Range("A2:T" & .Cells(Rows.Count, 1).End(xlUp).Row)
  7.             For i = LBound(arr, 1) To UBound(arr, 1)
  8.                 If InStr(strTxt, arr(i, 1)) Then
  9.                     iRow = iRow + 1
  10.                     brr(iRow, 1) = arr(i, 1)
  11.                     For j = 2 To 20
  12.                         brr(iRow, j) = -arr(i, j)
  13.                     Next
  14.                 End If
  15.             Next
  16.         End With
  17.         .Sheets("提取转换表").Range("A1").CurrentRegion.Offset(1, 0).Clear
  18.         .Sheets("提取转换表").Range("A2").Resize(iRow, 20) = brr
  19.     End With
  20. End Sub
复制代码
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-16 05:08 , Processed in 0.252563 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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