如何使用VBA代码使excel工作表中的所有单元格位于一列中?
如何使用VBA代码使excel工作表中的所有单元格位于一列中 任何简单的VBA想法都能奏效吗 我已经尝试过使用vba代码,但由于某些原因,该代码不起作用。注意带**的代码为故障区域。下面的代码有时有效,但并不总是有效。没有线索如何使用VBA代码使excel工作表中的所有单元格位于一列中?,excel,vba,Excel,Vba,如何使用VBA代码使excel工作表中的所有单元格位于一列中 任何简单的VBA想法都能奏效吗 我已经尝试过使用vba代码,但由于某些原因,该代码不起作用。注意带**的代码为故障区域。下面的代码有时有效,但并不总是有效。没有线索 Dim arr As Variant, lLoop1 As Long, lLoop2 As Long Dim arr2 As Variant, lIndex As Long 'turn off updates to speed up code execution Wit
Dim arr As Variant, lLoop1 As Long, lLoop2 As Long
Dim arr2 As Variant, lIndex As Long
'turn off updates to speed up code execution
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
.DisplayAlerts = False
End With
ReDim arr2(ActiveSheet.UsedRange.Cells.Count - ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks).Count)
arr = ActiveSheet.UsedRange.Value
For lLoop1 = LBound(arr, 1) To UBound(arr, 1)
For lLoop2 = LBound(arr, 2) To UBound(arr, 2)
***If Len(Trim(arr(lLoop1, lLoop2))) > 0 Then***
arr2(lIndex) = arr(lLoop1, lLoop2)
lIndex = lIndex + 1
End If
Next
Next
Sheets.Add
Range("A1").Resize(, lIndex + 1).Value = arr2
Range("A1").Resize(, lIndex + 1).Copy
Range("A2").Resize(lIndex + 1).PasteSpecial Transpose:=True
Rows(1).Delete
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
.DisplayAlerts = True
Rows("1:1").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("A1").Select
ActiveCell.FormulaR1C1 = "Qualitative Variable"
End With
此短宏将从Sheet1中获取所有非空白单元格,并将它们放在Sheet2的一列中:
调整您的工作表名称和目的地地址的代码。VBA几乎可以做任何事情,但您能澄清一下您的意思吗?让excel工作表中的所有单元格都在一列中是非常广泛和不清楚的。。。您可以提供的任何示例数据也会很有帮助!此代码适用于某些情况。但有时我会得到一个运行时错误13和类型不匹配错误。它希望我在达到If r.Value时进行调试,然后。。。。。谢谢你调查这件事!如果您试图拾取包含错误值的单元格,则可能会发生这种情况…………当我将.Value替换为.Text时,请尝试将.Value替换为.TextPerfect。对于较大的文件需要一些时间,但它可以完全按照需要完成工作。非常感谢!谢谢你的反馈!
Sub Columnize()
Dim s1 As Worksheet, s2 As Worksheet
Set s1 = Sheets("Sheet1")
Set s2 = Sheets("Sheet2")
Dim K As Long
K = 1
For Each r In s1.UsedRange
If r.Value <> "" Then
r.Copy s2.Cells(K, 1)
K = K + 1
End If
Next r
End Sub