【发布时间】:2018-04-29 16:26:00
【问题描述】:
我有一个数据表,因此需要将特定列的信息从水平布局转换并垂直插入到初始行下方。为了使事情变得更复杂,任何值为 0 的列都需要被忽略,并且每一行可能有不同的列为零。
到目前为止,我在 stackoverflow 的“DisplayName”的帮助下得到了帮助,但是线程变得沉默了。我很确定我有太多的后续行动。完全是我的错,因为我试图简化问题,这让我更难得到答案。
这个查询非常接近,但是由于某种原因,在这个数据集上运行它时它没有拾取所有的水平数据。由于某种原因,它停在“S”列而不是“CZ”列。同样在“B”列中有零的行中,它不会获取帐号,只是将收入代码和费用添加到其上方的名称中(请参阅跳过了帐户 123123141 的位置,但将对象编号添加到了 123123140) .
如果可能(我想不通),我可以附上实际的 .xlsm 文件。
Sub H2V()
' Vertically integrate horizontal revenue code data
' Keyboard Shortcut: Ctrl+Shift+Q
Dim headers As Variant, names As Variant, data As Variant
Dim iRow As Long
With Worksheets("Template")
With Intersect(.UsedRange, .Range("A:CZ"))
headers = Application.Transpose(Application.Transpose(.Offset(, 1).Resize(1, .Columns.Count - 1).Value))
names = Application.Transpose(.Offset(1).Resize(.Rows.Count - 1, 1).Value)
data = .Offset(1, 1).Resize(.Rows.Count - 1, .Columns.Count - 1).Value
.ClearContents
.Resize(1, 3).Value = Array("Patient Number", "Rev Code", "Charges")
End With
For iRow = 1 To UBound (data)
With .Cells(.Rows.Count, "B").End(xlUp)
.Offset(1, -1).Value = names(iRow)
.Offset(1, 0).Resize(UBound(headers)).Value = Application.Transpose(headers)
.Offset(1, 1).Resize(UBound(data)).Value = Application.Transpose(Application.Index(data, iRow, 0))
End With
Next
With .Range("B3", Cells(.Rows.Count, "B").End(xlUp)).SpecialCells(xlCellTypeConstants)
.Offset(, 1).Replace What:="0", Replacement:="", LookAt:=xlWhole
.Offset(, 1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With
End With
End Sub
【问题讨论】: