我遇到以下问题:
我有两个(动态)列表,分别名为MarketsEquities
和MarketsBonds
,分别在工作表SummaryEquities
和SummaryBonds
上找到。
然后我有一个名为PnL
的工作表,我想在其中创建先前工作表中列出的市场列表。这些市场都应列在C列中,并且在股票列表的末尾与债券列表的开始之间应留一个空格,我将在B列Bonds
中进行写。
这是到目前为止我得到的:
Sub InsertEquitiesBonds()
Dim ws As Worksheet, r1 As Range, r2 As Range
Set ws = Worksheets("PnL")
ws.Activate
Set Range("B3").Value = "Equities"
Set r1 = Worksheets("SummaryEquities").Range("MarketsEquities")
r1.Copy Range("C4")
'I want to then insert "Bonds" in Column B at the end of the listing of equities and then list all bonds in column C below that.
Set r2 = Worksheets("SummaryBonds").Range("MarketsBonds")
End Sub
非常感谢您的帮助。
答案 0 :(得分:1)
我建议为每一个 Range()
或Cells()
语句(例如ws.Range("C4")
)指定工作表,否则Excel会猜测您的意思是哪个工作表。
您可以使用以下命令确定列中最后使用的单元格
ws.Cells(ws.Rows.Count, "B").End(xlUp) 'last used cell in column B
,您可以使用.Offset(row, column)
从该单元格相对移动行/列。
所以我建议以下内容:
Public Sub InsertEquitiesBonds()
Dim ws As Worksheet
Set ws = Worksheets("PnL")
ws.Range("B3").Value = "Equities"
Worksheets("SummaryEquities").Range("MarketsEquities").Copy ws.Range("C4")
Dim LastUsedCell As Range
Set LastUsedCell = ws.Cells(ws.Rows.Count, "B").End(xlUp) 'last used cell in column B
LastUsedCell.Offset(2, 0).Value = "Bonds" 'move 2 cells down and write Bonds
Worksheets("SummaryBonds").Range("MarketsBonds").Copy LastUsedCell.Offset(3, 1) 'copy MarketsBonds 3 cells down and one cell right of the last used cell
End Sub