excel vba-复制公式并生成新图纸
如果我有一个名为“值”的工作表,其中只有一列单元格,例如:excel vba-复制公式并生成新图纸,vba,excel,scripting,Vba,Excel,Scripting,如果我有一个名为“值”的工作表,其中只有一列单元格,例如: ColumnA --------- emp_id emp_name dept_id ColumnA -------- ="select count(*) from tablex where "&a1&" is null;" ="select count(*) from tablex where length("&a1&") > 10;" ColumnB -------- Sheet for nu
ColumnA
---------
emp_id
emp_name
dept_id
ColumnA
--------
="select count(*) from tablex where "&a1&" is null;"
="select count(*) from tablex where length("&a1&") > 10;"
ColumnB
--------
Sheet for null
Sheet for length
然后是第二张名为“sql”的表格,其中有两列,单元格如下:
ColumnA
---------
emp_id
emp_name
dept_id
ColumnA
--------
="select count(*) from tablex where "&a1&" is null;"
="select count(*) from tablex where length("&a1&") > 10;"
ColumnB
--------
Sheet for null
Sheet for length
我需要生成以下两张输出图纸(每张图纸只有一列),需要什么VBA宏代码(注意,我需要在VBA中使用它,因为我只想单击一个按钮来生成图纸):
我想这会满足你的要求 我所做的一个更改是,在“sql”表上,我将单元格内容更改为如下所示:
="select count(*) from tablex where variable is null;"
因此,我使用了“variable”而不是您最初使用的“&a1&”,然后在代码中,它用emp\u id、emp\u name等正确值替换了这个词
Sub GenerateSheets()
Dim formulaRange As Range
Dim formula As String
Dim r As Range
Dim destloc As Range
Dim VariableRange As Range
Set formulaRange = Worksheets("sql").Cells(1, 1)
' get each formula
Do Until formulaRange.Value = ""
For Each r In formulaRange.Rows
' for each formula found, create a new sheet and move it to end
Worksheets.Add
ActiveSheet.Name = r.Offset(0, 1).Value
ActiveSheet.Move after:=Sheets(ActiveWorkbook.Sheets.Count)
Set destloc = ActiveSheet.Cells(1, 1)
Set VariableRange = Worksheets("values").Cells(1.1)
' Loop through all the variables
Do Until VariableRange.Value = ""
destloc.Value = Replace(formulaRange.Value, "variable", VariableRange.Value)
Set VariableRange = VariableRange.Offset(1, 0)
Set destloc = destloc.Offset(1, 0)
Loop
Next
Set formulaRange = formulaRange.Offset(1, 0)
Loop
End Sub
您连接到哪个数据库?(其中是
表x
)。你已经试过什么了?甲骨文。为了得到这个简单的示例,working tablex是硬编码的,但将来我会将tablename放在每个字段名旁边的单元格中。我尝试过手动复制单元格,但我真的很想用vba节省时间。