Excel精英培训网

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

[已解决]求vba代码

[复制链接]
发表于 2012-6-7 17:16 | 显示全部楼层 |阅读模式
本帖最后由 xin12389 于 2012-6-7 18:26 编辑

要求:若
           1、A1单元格的值在1-20之间与之对应的A2则为A
           2、A1单元格的值在21-30之间与之对应的A2则为B
           3、A1单元格的值在31-40之间与之对应的A2则为C
         且   B1=A1
           4、B1=10 则A2=D,A1=25则A2=E
           5、B1的值大于等于41则A2=F
           6、A1的值小于1则A2仅为字符“无效值”
例如:A1=25 则A2=AE,只能用case判断
不好意思漏掉一个条件,这样好理解一点
最佳答案
2012-6-7 17:58
本帖最后由 suye1010 于 2012-6-7 18:06 编辑
  1. Sub test()
  2. Select Case Cells(2, 1)
  3.     Case Is < 1
  4.         Cells(1, 1) = "无效值"
  5.     Case Else
  6.         Cells(1, 1) = WorksheetFunction.Lookup(Cells(2, 1), Array(1, 10, 11, 21, 25, 26, 31, 41), Array("A", "D", "A", "B", "E", "B", "C", "F"))
  7. End Select
  8. End Sub
复制代码
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-6-7 17:22 | 显示全部楼层
回复

使用道具 举报

发表于 2012-6-7 17:24 | 显示全部楼层
有矛盾。
条件x:A1单元格的值在1-20之间与之对应的A2则为A
条件y:A1=10 则A2=D


select case做好些。
回复

使用道具 举报

发表于 2012-6-7 17:33 | 显示全部楼层
本帖最后由 ws278106483 于 2012-6-7 17:34 编辑

  1. Sub pd()
  2. If Range("a1").Value > 1 And Range("a1").Value <= 20 And Range("a1").Value = 10 Then
  3.   Range("a2").Value = "D"
  4.   ElseIf Range("a1").Value > 20 And Range("a1").Value <= 30 And Range("a1").Value = 25 Then
  5.   Range("a2").Value = "E"
  6.   ElseIf Range("a1").Value > 30 And Range("a1").Value <= 40 Then
  7.    Range("a2").Value = "C"
  8.   ElseIf Range("a1").Value > 1 And Range("a1").Value <= 20 Then
  9.    Range("a2").Value = "A"
  10.    ElseIf Range("a1").Value > 20 And Range("a1").Value <= 30 Then
  11.     Range("a2").Value = "B"
  12.   ElseIf Range("a1").Value >= 41 Then
  13.   Range("a2").Value = "F"
  14.   Else
  15.   Range("a2").Value = "无效值"
  16. end if
  17. End Sub
复制代码
楼主试试,应该可以的。
回复

使用道具 举报

发表于 2012-6-7 17:35 | 显示全部楼层
楼主看一下,对不。记得给个回愎哦。呵呵

新建 Microsoft Excel 工作表.rar

6.27 KB, 下载次数: 2

回复

使用道具 举报

发表于 2012-6-7 17:45 | 显示全部楼层
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Target.Address = "$A$1" Then
  3.   Select Case Target
  4.   Case 10: [A2] = "D"
  5.   Case 25: [A2] = "E"
  6.   Case Is < 1: [A2] = "无效值"
  7.   Case Is <= 20: [A2] = "A"
  8.   Case Is <= 30: [A2] = "B"
  9.   Case Is <= 40: [A2] = "C"
  10.   Case Else: [A2] = "F"
  11. End Select
  12. End If
  13. End Sub
复制代码
回复

使用道具 举报

发表于 2012-6-7 17:50 | 显示全部楼层
本帖最后由 suye1010 于 2012-6-7 18:10 编辑
  1. =LOOKUP(A2,{-100000,1,10,11,21,25,26,31,41},{"无效值","A","D","A","B","E","B","C","F"}))
复制代码
直接在VBA中用个公式来处理不好吗?写Select语句好长哦
回复

使用道具 举报

发表于 2012-6-7 17:58 | 显示全部楼层    本楼为最佳答案   
本帖最后由 suye1010 于 2012-6-7 18:06 编辑
  1. Sub test()
  2. Select Case Cells(2, 1)
  3.     Case Is < 1
  4.         Cells(1, 1) = "无效值"
  5.     Case Else
  6.         Cells(1, 1) = WorksheetFunction.Lookup(Cells(2, 1), Array(1, 10, 11, 21, 25, 26, 31, 41), Array("A", "D", "A", "B", "E", "B", "C", "F"))
  7. End Select
  8. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2012-6-7 18:25 | 显示全部楼层
Select 发表于 2012-6-7 17:24
有矛盾。
条件x:A1单元格的值在1-20之间与之对应的A2则为A
条件y:A1=10 则A2=D

不好意思漏掉一个条件
回复

使用道具 举报

 楼主| 发表于 2012-6-7 18:30 | 显示全部楼层
ws278106483 发表于 2012-6-7 17:35
楼主看一下,对不。记得给个回愎哦。呵呵

非常谢谢您的回复
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-29 15:52 , Processed in 0.252696 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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