我有这个宏来将水平数据转换为垂直数据:
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
答案 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