EXCEL VBA 的代码问题?

如果表"数据"中C9不为空,就在其它表格中的BG1返回1;
如果表"数据"中D9不为空,就在其它表格中的BH1返回1;

一直到如果表"数据"中Z9不为空,就在其它表格中的CD1返回1;
请问这个循环要怎么写啊?

代码大致功能:
1、去掉C列中的逗号
2、清空L至R列的数据(从第二行开始到R列的最后有数据的行)
3、将B列的数据(第二行开始)利用字典去重放入L列(第二行开始)
4、设置M2公式=VLOOKUP(L2,B:C,2,0),并向下填充
5、设置N2公式=VALUE(RIGHT(VLOOKUP(L2,B:D,3,0),6)),并向下填充
6、设置O2公式=SUMIFS(C[-8],C[-13],RC[-3]),并向下填充
7、设置P2公式=COUNTIF($B:$B,$L2)+COUNTIF(存款总次数!$A:$A,IF(LEN(N2)=5,VALUE(z000000&N2),VALUE(z00000&N2))),并向下填充
8、设置Q2公式=IFERROR(VLOOKUP(M2,代码!A:B,2,0),""),并向下填充
9、设置R2公式=COUNTIF(注册!$B:$B,L2),并向下填充
语句:
1、Range("R65536").End(xlUp).Row 表示R列最后有数据的行
2、Set d = CreateObject("Scripting.Dictionary") 字典对象,这里主要是应用其key的唯一行来去重
3、Range("L2").Resize(d.Count, 1) = WorksheetFunction.Transpose(d.keys) resize扩充,这里就是将L2变成 L2:L(d.count+1) ,比如 d.count=10,那么这里就是L2:L11,也就是向下扩充d.count-1行,向后扩充1-1=0列,然后将数组数据放入其中
4、Range("M2").Select 表示 选中M2单元格
5、ActiveCell.Formula ActiveCell 当前选中的单元格 Formula 就是公式
6、Selection.AutoFill Destination:=Range("M2:M" & Range("L65536").End(xlUp).Row) selection 表示选中的单元格 ,autofill就是自动填充,Destination 表示填充的位置,这里就是M列从第二行开始至最后有数据的行追问

你粘贴这些累不累

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-04-06
c9:Z9
共24个
BG1:CD,也是24个
你分表,共21个,怎么循环?
第2个回答  2021-04-06
Sub XX()
Dim i%
For i = 3 To [z1].Column
If Worksheets("数据").Cells(9, i) <> "" Then
Worksheets("其他").Cells(1, [BG1].Column + i - 3) = 1
End If
Next i
End Sub追问

谢谢老师,我忘记上图了,现在修改不成功.
其它工作表就是有 "数据2",外加 "1","2"......."20",一共21个工作表.
这个工作表帮忙写个循环

追答

呃,是什么意思,没搞懂,是如果C9不为空,就将C9的内容写入你说的这些全部工作表中的BG1吗?

追问

是啊,就是这个意思,我问的时候忘记放图了,所以就用文字追问了一下. 表"数据2"加上 表"1"-表"20",共21个工作表

追答

将内容填入除了数据工作表外的其他表格:
Sub XX()
Dim i%, j As Worksheet
For Each j In Worksheets
If j.Name "数据" Then
For i = 3 To [z1].Column
If Worksheets("数据").Cells(9, i) "" Then
j.Cells(1, [BG1].Column + i - 3) = 1
End If
Next i
End If
Next j
End Sub

本回答被提问者采纳
相似回答