ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何返回不同格式下的数据有效性?

如何返回不同格式下的数据有效性?

作者:绿色风 分类: 时间:2022-08-17 浏览:97
楼主
liuguansky
Q:如何返回不同格式下的数据有效性?
问题1:将一班、二班、三班、四班用函数或VBA取出,并将以有效序列形式写入C12
问题2:将C12值中对应的班级中学生的名字用
函数或VBA
取出,并以有效序列形式写入D12
问题3:按C12和D12中的值将其对应的成绩用
函数或VBA取出,并写入E12

A:用如下代码可以实现:

  1. Sub validationadd()
  2.   Dim arr, lr&, lc&, i&, j&, str1
  3.   lr = Cells(Rows.Count, 1).End(3).Row
  4.   lc = Cells(lr, 1).End(2).Column
  5.   arr = Cells(1, 1).Resize(lr, lc).Value
  6.   For i = 1 To lr Step 5
  7.     For j = 1 To lc Step 6
  8.       str1 = str1 & "," & arr(i, j)
  9.   Next j, i
  10.   str1 = Mid(str1, 2)
  11.   With Cells(lr + 2, 3).Validation
  12.     .Delete
  13.     .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
  14.         xlBetween, Formula1:=str1
  15.   End With
  16.   str1 = ""
  17.   For i = 1 To lr
  18.     If i - 1 Mod 5 > 1 Then
  19.       For j = 1 To lc Step 2
  20.         str1 = str1 & "," & arr(i, j)
  21.       Next j
  22.     End If
  23.   Next i
  24.   str1 = Mid(str1, 2)
  25.   With Cells(lr + 2, 4).Validation
  26.     .Delete
  27.     .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
  28.         xlBetween, Formula1:=str1
  29.   End With
  30.   str1 = ""
  31.   For i = 1 To lr
  32.     If i - 1 Mod 5 > 1 Then
  33.       For j = 2 To lc Step 2
  34.         str1 = str1 & "," & arr(i, j)
  35.       Next j
  36.     End If
  37.   Next i
  38.   str1 = Mid(str1, 2)
  39.   With Cells(lr + 2, 5).Validation
  40.     .Delete
  41.     .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
  42.         xlBetween, Formula1:=str1
  43.   End With
  44. End Sub

支持下右扩展,在数据的下方第二行的第3 4 5 列返回数据有效性


2楼
analyzer
谢谢版主的热心帮助,十分有用,谢谢了!

但是还是有些问题,或许是我没有表述清楚
1.如果C12=“一班”,那些D12只显示出属于一班的所有名字,其它班级的姓名刚不显示
2.如果C12="一班",D12=“李一”,那E12就自动查找属于“一班”、“李一”的成绩,其它成绩将不显示,也就是说E12不是序列形式
3楼
gvntw


请在原提问帖处补充问题进行提问,谢谢!

免责声明

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

评论列表
sitemap