excel - 将行转换为具有空格的列

  显示原文与译文双语对照的内容

我有一个电子表格,其中包含一个列和值,如下所示:


A
B
C
*
D
E
*
F
G
H
I

* 表示空单元格。 总之,我可以让它读到下面的每一个单元格中。


1 2 3
D E
F G H I

我知道了 =IF(ISBLANK(A12),TRANSPOSE(A13:A23),"") 这有助于将范围设置为 10. 如何设置它以便在A13和backtracks一个单元格之后查找下一个空单元格?

谢谢,

JJ

时间: 作者:

没有内置的函数可以执行这里任务。 我已经创建了一个用户函数,应该能够实现这个功能。 为了使输入正确,输入数据应该在一个带有空单元格的列中定义转置输出矩阵的"换行符"。

在VBA模块中包含以下代码。


Option Explicit
Function TransposeSpecial(InpRng As Range)
 Dim Cell As Range
 Dim c1 As Integer, c2 As Integer, i As Integer, j As Integer, k As Integer
 Dim TArr()

 If TypeName(InpRng) <>"Range" Then Exit Function

 'Get dimentions
 For Each Cell In InpRng
 If Cell.Value <> vbNullString Then
 i = i + 1
 Else
 c1 = c1 + 1
 If i> c2 Then c2 = i
 i = 0
 End If
 Next Cell

 c1 = c1 + 1
 If i> c2 Then c2 = i
 i = 1
 j = 1

 'Defines the dimention of the output array
 ReDim TArr(1 To c1, 1 To c2)

 'Writes to array
 For Each Cell In InpRng
 If Cell.Value <> vbNullString Then
 TArr(i, j) = Cell.Value
 j = j + 1
 Else
 For k = j To c2
 TArr(i, k) = vbNullString
 Next k
 i = i + 1
 j = 1
 End If
 Next Cell
 If j <= c2 Then
 For k = j To c2
 TArr(i, k) = vbNullString
 Next k
 End If

 TransposeSpecial = TArr
End Function

现在,通过使用这个函数,将单个数据列作为输入,在一个足够大的( 至少) 中包含输出矩阵。 在使用函数时,请记住使用 Ctrl Ctrl + Shift + + 。

enter image description here

...