将每个单元格中不等数量的字符移动到另一列范围有限的单个单元格

将每个单元格中不等数量的字符移动到另一列范围有限的单个单元格

如何将第一列单元格的字符移动到另一列,但第二列每个单元格的字符数不得超过 25 个。例如,第一列的前 5 行单元格各有 5 个字符,这些字符将迁移到第二列单个单元格,总共有 25 个字符,第 6、7、8 行可能有 7 个字符,第 9 行可能有 8 个字符。因此,只有第 6、7、8 行(总共 21 个字符)将迁移到第二列。第 9 行将与下一行合并,这样一来,字符数可能为 25 个或略少一些。谢谢

答案1

B1进入:

=MID(TEXTJOIN("",TRUE,A:A),(ROWS($1:1)-1)*25+1,25)

并向下复制:

在此处输入图片描述

该公式将列中的所有数据连接起来A然后它取出 25 个字符“块”,并将它们放在列中

编辑#1:

这是一个基于宏的解决方案。宏会向下移动列A通过连接构建字符串。在字符串超过 25 个字符之前,它将存储在列中单元格,并开始新的字符串。宏:

Sub Kompactor()
    Dim txt As String, K As Long, i As Long
    txt = ""
    K = 1

    For i = 1 To 25
    If Len(txt & Cells(i, 1)) > 25 Then
        Cells(K, 2) = txt
        txt = Cells(i, 1)
        K = K + 1
    Else
        txt = txt & Cells(i, 1)
    End If
    Next i

    Cells(K, 2) = txt
End Sub

一些示例数据:

在此处输入图片描述

如您所见,A1、A2、A3、A4 进入 B1,
A5、A6、A7 进入 B2
等等。

相关内容