Excel 是否有一个公式可以从一张图纸(不包括空白)中获取所有值,并按顺序显示在另一张图纸上?
有点棘手的问题。我把F:K列和表1中的数字放在一起 是否有excel公式可以复制表1(不包括空格)中的所有值,并将其显示在表2中的B列中 B列第2页中的显示顺序应为水平,因此如果F2中有任何值;G2;H2;I2;J2;K2-F3;G3;H3;I3;J3;K3等应按该顺序显示 带数字的列 因此,表2中的预期输出应如下所示Excel 是否有一个公式可以从一张图纸(不包括空白)中获取所有值,并按顺序显示在另一张图纸上?,excel,vba,excel-formula,Excel,Vba,Excel Formula,有点棘手的问题。我把F:K列和表1中的数字放在一起 是否有excel公式可以复制表1(不包括空格)中的所有值,并将其显示在表2中的B列中 B列第2页中的显示顺序应为水平,因此如果F2中有任何值;G2;H2;I2;J2;K2-F3;G3;H3;I3;J3;K3等应按该顺序显示 带数字的列 因此,表2中的预期输出应如下所示 非常感谢您的光临互联网上有一个函数,相当于PHP内爆函数,它可以满足您的需要。 并成为工作簿中要使用的函数。 在L2中: 我会这样做 Option Explicit Pu
非常感谢您的光临互联网上有一个函数,相当于PHP内爆函数,它可以满足您的需要。
并成为工作簿中要使用的函数。
在L2中:
我会这样做
Option Explicit
Public Sub test()
AggregateToColumnWithoutBlanks DataRange:=Range("A2:F4"), OutputStart:=Range("H2")
End Sub
Public Sub AggregateToColumnWithoutBlanks(ByVal DataRange As Range, ByVal OutputStart As Range)
Dim DataCells As Range
Set DataCells = DataRange.SpecialCells(xlCellTypeConstants)
If DataCells Is Nothing Then Exit Sub 'no data found
Dim Output() As Variant
ReDim Output(1 To DataCells.Count, 1 To 1) As Variant
Dim iRow As Long
Dim Cell As Range
For Each Cell In DataCells.Cells
iRow = iRow + 1
Output(iRow, 1) = Cell.Value
Next Cell
OutputStart.Resize(RowSize:=UBound(Output, 1)).Value = Output
End Sub
循环遍历所有具有常量值的单元格
xlCellTypeConstants
,如果有可能需要调整的公式。并将它们收集到一个数组中,以便在一个范围内轻松输出。排除空格位很困难-不排除空格可以使用=INDEX(Sheet1!F:K,FLOOR.MATH(ROW(B1)/6+5/6),MOD(ROW(B1)-1,6)+1)在单元格B1中复制下显示您的预期输出。你的excel版本是什么TEXTJOIN()
可能有效。Hi@Andreas似乎是一个完美的解决方案,但是我使用excel 2013,并且内爆函数不适用于我。它不适用于任何人,除了那些在VBA编辑器中的模块答案中添加代码的人。无论如何,它不符合要求。查看预期输出屏幕截图。这是在我写下此答案后编辑的。但问题仍然是:应该是水平的,所以如果F2中有任何值;G2;H2;I2;J2;K2-F3;G3;H3;I3;J3;K3
。我向您致敬,先生。像梦一样工作@PEHhow我可以用单元格中的公式调整上面的范围吗?我已经将数据单元类型更改为xlCellTypeFormulas类型,但它会使用空格提取输出?因为它们不是空白的。空白表示没有内容,甚至没有公式。您是对的,有一列包含vlookup公式。我想用上面的代码来转移这些列(不包括空格)。您自己说过“如果有公式,您可能需要调整它。并将它们收集到一个数组中,以便在一个范围内轻松输出。”?
=IMPLODE(F2:K2,";")
Option Explicit
Public Sub test()
AggregateToColumnWithoutBlanks DataRange:=Range("A2:F4"), OutputStart:=Range("H2")
End Sub
Public Sub AggregateToColumnWithoutBlanks(ByVal DataRange As Range, ByVal OutputStart As Range)
Dim DataCells As Range
Set DataCells = DataRange.SpecialCells(xlCellTypeConstants)
If DataCells Is Nothing Then Exit Sub 'no data found
Dim Output() As Variant
ReDim Output(1 To DataCells.Count, 1 To 1) As Variant
Dim iRow As Long
Dim Cell As Range
For Each Cell In DataCells.Cells
iRow = iRow + 1
Output(iRow, 1) = Cell.Value
Next Cell
OutputStart.Resize(RowSize:=UBound(Output, 1)).Value = Output
End Sub