如何让我的宏来转置字符串和数字的数据

时间:2017-09-12 07:05:59

标签: vba excel-vba excel

我有这个宏来将水平数据转换为垂直数据:

Set Rng = Range("A1:D10")
Sheets("Sheet3").Select
Range("g1").Select
k = 0

For Each rw In Rng.Rows
    For Each mycell In rw.Columns
        If IsEmpty(mycell) Then Exit For

        If mycell.Column = 1 Then
            myletter = mycell
        Else
            ActiveCell.Offset(rowOffset:=k, columnOffset:=0) = myletter
            ActiveCell.Offset(rowOffset:=k, columnOffset:=1) = mycell
            k = k + 1
        End If
    Next
Next

宏工作得很好,除了当它运行时,它转移数据,但如果数据存储为文本然后它砍它并将其转换为数字,有没有办法修改宏并让它不这样做?

示例:如果我有00293472427宏会吐出293472427

非常感谢任何帮助,谢谢!

忘了说,在转置我的数据之前看起来像这样:

A 22.2 11 14 21

看起来像这样:

A 22.2
A 11
A 14
A 21

3 个答案:

答案 0 :(得分:1)

不确定您希望const a = Object.freeze({ foo: 'Hello', bar: 'world', baz: '!' }); 您的搜索结果,但为了保留您拥有的数值,该值将存储为Transpose(因为它保留了String 1}}作为前缀)使用下面的代码:

00

答案 1 :(得分:0)

这两种使用Transpose的方法:

Option Explicit

Sub TransposeWithCopyAndPaste()

    Range("A1:D10").Copy
    Range("E10").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
    Application.CutCopyMode = False

End Sub

Sub TransposeWithApplicaitonTranspose()

    Dim rngRange As Range
    Set rngRange = Range("A1:D10")
    Range("G20:P23").Cells = Application.Transpose(rngRange)

End Sub

第一个使用Excel公式中的复制和粘贴转置,第二个使用Application.Transpose(Range),如评论中所示。

答案 2 :(得分:0)

在我看来,你想制作一个细胞的副本。

For Each rw In Rng.Rows
For Each mycell In rw.Columns
    If IsEmpty(mycell) Then Exit For

    If mycell.Column = 1 Then
      Set myletter = mycell
    Else
       myletter.Copy ActiveCell.Offset(rowOffset:=k, columnOffset:=0)
       mycell.Copy ActiveCell.Offset(rowOffset:=k, columnOffset:=1)
        k = k + 1
    End If
Next
Next