我有两个Excel工作表sheet1和sheet2.Sheet1是一个动态Excel工作表,可能有添加列的机会。我已经编码将列标题从sheet1动态复制到sheet2。
Sheet1:
Prdct Id PrdctQty Unitprice PrdctQty
1 5 10 50
2 10 10 100
sheet2:
Prdct Id PrdctNme Unitprice PrdctQty
当我打开sheet2时,这些标题会自动显示在sheet1上(使用宏)。sheet2中有2个按钮。
1.Display-display product details on matching Prdct Id entered by the user(that also done through macro)
2.Add- To add new product,user can enter Prdct Id , PrdctNme, Unitprice and it will be copied to sheet1 (through macro)
Sheet1还包含其他具有fromulas的列(我没有在示例中显示),sheet1可以动态增长。
所以我想要的是当用户输入Prdct Id , PrdctNme, Unitprice
然后PrdctQty
应该自动进入sheet2(以及我暂时不包括的其他计算列),之后我可以将新产品添加到Sheet 1中
我试过这段代码(来自stackoverflow)
Sub dural()
Dim r As Range, ady As String
For Each r In Sheets("Sheet1").Cells.SpecialCells(xlCellTypeFormulas)
ady = r.Address
r.Copy Sheets("Sheet2").Range(ady)
Next
End Sub
但我得到的是sheet2中sheet1的整个副本以及值。我需要的只是公式而不是值
答案 0 :(得分:0)
尝试这样的事情:
Sub moveformulas ()
Sheets(1).UsedRange.SpecialCells(xlCellTypeFormulas).Copy
Sheets(2).Range("A1").PasteSpecial
End Sub
答案 1 :(得分:0)
即使我不确定它是正确的方法,我找到了一种方法。
Sub dural()
Dim r As Range, ady,ady2 As String
For Each r In Sheets("Sheet1").Cells.SpecialCells(xlCellTypeFormulas)
ady = r.Address
ady2=r.formula
Sheets("Sheet2").Range(ady).formula=ady2
Next
它对我有用
答案 2 :(得分:0)
Sub CopyOnlyFormulas()
Sheets(1).UsedRange.Copy
Sheets(2).Cells.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone
For Each cell In Sheets(2).UsedRange
If Not cell.HasFormula Then
cell.Clear
End If
Next
End Sub
Sub CopyDataAndFormulas()
Sheets(1).UsedRange.Copy
Sheets(2).Cells.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone
End Sub