excel - 如何将数组的值设置为工作表的第一行?
问题描述
我正在尝试创建一个数组,其中值来自工作表的第一行,然后在另一张表中打印这些值。
我尝试读取 Sheet2 的第一行,将每个值存储在数组中,直到遇到一个空单元格,然后在 Sheet3 的第一行中打印该数组。
我在确保行不等于 Null 的 while 循环中遇到应用程序定义的错误。
Private Sub createFormatSheet()
With Worksheets("Sheet2")
Dim myTags() As Variant
Dim tag As Variant
Dim rw As Range
Dim i As Integer
i = 1
For Each rw In .Rows
While rw(i, 1) <> Null
myTags = Array(rw(i, 1))
i = i + 1
Wend
Next rw
End With
With Worksheets("Sheet3")
i = 1
For Each tag In myTag
.Cells(i, 1).Value = tag
Next tag
End With
End Sub
解决方案
这里有两种方法:
- 使用数组(您不需要遍历项目
- 直接使用范围,不涉及数组
使用单步执行代码F8
,看看发生了什么
Private Sub createFormatSheet()
Dim sourceSheet As Worksheet
Dim targetSheet As Worksheet
Dim startRow As Long
Dim endRow As Long
Dim values As Variant
Set sourceSheet = ThisWorkbook.Worksheets("Sheet2")
Set targetSheet = ThisWorkbook.Worksheets("Sheet3")
' Array approach (no need to loop) source = column 1
startRow = 1
endRow = sourceSheet.Cells(startRow, 1).End(xlDown).Row
values = sourceSheet.Range(sourceSheet.Cells(startRow, 1), sourceSheet.Cells(endRow, 1)).Value
' Target = column 1
targetSheet.Cells(startRow, 1).Resize(endRow, 1).Value = values
' Direct range target column 2
targetSheet.Cells(startRow, 2).Resize(endRow, 1).Value = sourceSheet.Range(sourceSheet.Cells(startRow, 1), sourceSheet.Cells(endRow, 1)).Value
End Sub
让我知道它是否有效
推荐阅读
- python - 基于特定键的列表中的列表
- regex - 通过模式匹配移动文件夹中的文件
- sql - 使用 CASE 语句对 2 行求和
- python-3.x - 如何使用 Selenium 库和 Robot 框架自动化 EDGE 浏览器的用户名和密码字段?
- ios - Swift : textFieldShouldBeginEditing 功能修复
- angularjs - 修复库文件中的问题并在我们的项目中使用它们是否很好
- javascript - 从使用java脚本或jquery的字符串如何获取两个分隔符之间提到的值列表?
- mysql - 如何使用spring MVC在给定条件下从mysql获取数据
- html - 使用 img srcset 的响应式图像
- html - 仅在同一滚动容器中水平或垂直修复项目