Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 从单元格中收集数据并分配给一个范围。如何避免文本自动编号?_Excel_Vba - Fatal编程技术网

Excel 从单元格中收集数据并分配给一个范围。如何避免文本自动编号?

Excel 从单元格中收集数据并分配给一个范围。如何避免文本自动编号?,excel,vba,Excel,Vba,我想从大型工作表中收集数据并粘贴到目标范围 数据混合了数字和类似数字的字符串(例如:“0050”) 我尝试了一个变体数组来存储数据并分配给一系列单元格 以下是示例代码: Dim z() As Variant Dim i As Integer ReDim z(1 To 3, 1 To 1) With ThisWorkbook.Sheets(1) .Cells(1, 1) = "'" & "0050" 'content from cell A, could be number or

我想从大型工作表中收集数据并粘贴到目标范围

数据混合了数字和类似数字的字符串(例如:“0050”)

我尝试了一个变体数组来存储数据并分配给一系列单元格

以下是示例代码:

Dim z() As Variant
Dim i As Integer
ReDim z(1 To 3, 1 To 1)
With ThisWorkbook.Sheets(1)

    .Cells(1, 1) = "'" & "0050" 'content from cell A, could be number or number like string.
    .Cells(3, 1) = 20           'content from cell B, could be number or number like string.
    .Cells(5, 1) = "'" & "040"  'content from cell C, could be number or number like string.

    For i = 1 To 3
        z(i, 1) = .Cells(1 + (i - 1) * 2, 1)
    Next

    .Cells(1, 2).Resize(3, 1) = z

End With
Excel会自动将字符串“0050”更改为数字格式,以便单元格(1,2)中的值为50,而不是“0050”

我希望单元格的格式与最初相同,但我事先不知道每个单元格的格式

我可以使用循环将每个单元格分配给另一个单元格,但运行速度会很慢:

Dim z() As Variant
Dim i As Integer
ReDim z(1 To 3, 1 To 1)
With ThisWorkbook.Sheets(1)

    .Cells(1, 1) = "'" & "0050" 'content from cell A, could be number or number like string.
    .Cells(3, 1) = 20           'content from cell B, could be number or number like string.
    .Cells(5, 1) = "'" & "040"  'content from cell C, could be number or number like string.

    For i = 1 To 3
        .Cells(i, 2) = .Cells(1 + (i - 1) * 2, 1)
    Next

End With
有没有办法避免Excel自动将字符串更改为数字?

另一种解决方案:

Sub test()

    Dim Lastrow As Long
    Dim str As String

    With ThisWorkbook.Worksheets("Sheet1")

        str = "00005"

        With .Range("A1")
            'Change cell format to TEXT before you enter value
            .NumberFormat = "@"
            .Value = str
        End With

    End With

End Sub

您可以先使用变量保存表达式的值,而不是直接设置单元格值。然后可以将单元格的值设置为文本形式的变量值。所有这些都在您已经完成的循环中written@kerweivariant数组可以存储字符串和数字,并且它将“0050”存储为字符串类型变量。但是,当我将其指定给一个范围时,它将变成数字格式。我不确定我是否误解了你的观点。单元格(1,1)=。单元格(1,2)的结果可能与我所说的相同。我尝试将一个数组分配给运行速度更快的范围,而不是逐个单元格。你知道怎么做吗?