ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的测验 > Excel VBA > VBA练习02 按规则修改对应的内容

VBA练习02 按规则修改对应的内容

作者:绿色风 分类: 时间:2022-08-18 浏览:160
楼主
水星钓鱼
下图列举了两个工作表,分别为“项目数据库”和“修改规则”。现在希望通过VBA把“项目数据库”中的“标准名称”与修改规则中的“项目名称”一致的对应的“收费”和“主检”按照修改规则进行修改。举例说明如下:
比如C3单元格的“标准名称”为“材质”与“修改规则”中的“项目名称”材质匹配,所以需要将“标准名称”为“材质”对应的收费和主检修改为“修改规则”中的“新收费”和“新主检”
 

附件如下:


VBA练习02 按规则修改对应的内容.rar


要求:
1.不得使用循环语句
2.第一个回答正确的,加技能分1分,魅力值3分,优秀答案(指想法新颖)加技能分3分,魅力值5分。其余回答正确者加魅力值1分。3.提示下用SQL语句完成


2楼
oldyuan
  1. Sub oldyuan()
  2.     Dim LastRow&, LastRow1&
  3.     LastRow = Sheets("项目数据库").UsedRange.Rows.Count
  4.     LastRow1 = Sheets("修改规则").UsedRange.Rows.Count - 1
  5.     Application.ScreenUpdating = False
  6.     With Range("E1")
  7.         .FormulaArray = "=IF(ISNA(VLOOKUP(C1,修改规则!$A$1:$B$" & LastRow1 & ",2,)),D1,VLOOKUP(C1,修改规则!$A$1:$B$" & LastRow1 & ",2,))"
  8.         .AutoFill Range("E1:E" & LastRow)
  9.     End With
  10.     With Range("F1")
  11.         .FormulaArray = "=IF(ISNA(VLOOKUP(C1,修改规则!$A$1:$C$" & LastRow1 & ",3,)),A1,VLOOKUP(C1,修改规则!$A$1:$C$" & LastRow1 & ",3,))"
  12.         .AutoFill Range("F1:F" & LastRow)
  13.     End With
  14.     Range("D1:D" & LastRow) = Range("E1:E" & LastRow).Value
  15.     Range("A1:A" & LastRow) = Range("F1:F" & LastRow).Value
  16.     Columns("E:F").Delete
  17.     Application.ScreenUpdating = True
  18. End Sub
3楼
amulee
玩玩
  1. Sub SQL()
  2.     Dim SQL As String
  3.     Dim Conn As Object
  4.     Dim Rst As Object
  5.     Set Conn = CreateObject("ADODB.Connection")
  6.     Conn.Open "Provider=Microsoft.ace.Oledb.12.0;" & _
  7.               "Extended Properties=Excel 12.0 Xml;" & _
  8.               "Data Source=" & ThisWorkbook.FullName
  9.     SQL = "Select IIF(B.项目名称 Is Null,A.主检,B.新主检) As 主检,A.项目名称,A.标准名称,IIF(B.项目名称 Is Null,A.收费,B.新收费) As 收费  From [项目数据库$] A Left Join [修改规则$] B On A.标准名称=B.项目名称"
  10.     Set Rst = Conn.Execute(SQL)
  11.     Sheet1.Range("A2").CopyFromRecordset Rst
  12.     Rst.Close
  13.     Conn.Close
  14.     Set Conn = Nothing
  15.     Set Rst = Nothing
  16. End Sub
4楼
LOGO
没仔细看题.再想想先。。

  1. Sub 变更()
  2. Dim 旧, 新, i As Integer, y As Integer
  3. 旧 = Worksheets("项目数据库").Range("a1").CurrentRegion
  4. 新 = Worksheets("修改规则").Range("a1").CurrentRegion
  5. Application.ScreenUpdating = False
  6. Application.Calculation = xlCalculationManual
  7. For i = 2 To UBound(旧)
  8.     For y = 2 To UBound(新)
  9.       If 旧(i, 2) = 新(y, 1) Then
  10.          旧(i, 1) = 新(y, 3)
  11.          旧(i, 4) = 新(y, 2)
  12.       End If
  13.     Next
  14. Next
  15. Worksheets("项目数据库").Range("a1").Resize(UBound(旧), UBound(旧, 2)) = 旧
  16. Application.ScreenUpdating = True
  17. Application.Calculation = xlCalculationAutomatic
  18. End Sub
5楼
xgixvuxx
我在这里找了不少剑灵的服装替换  网站叫希望之地  还不错  他们搞剑灵破解挺专业的

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap