假设有3列。在1列号(a1)中,在第二个名称(b1)中,在第三个描述中(c1)。我想创建另一个表,以便数据传播到它,但有1个条件。如果在3列中,在一个单元格中超过500个字符,则继续将数据从行复制到下一个单元格。 (例如,有一条线a2,b2,c2在单元格c2中,获得600个符号,然后将剩余的字符转移到一个单元格,c3并从单元格a2,b2复制文本)是否可以跟踪它?一些反击,他会计算单元格中的符号。 enter image description here
答案 0 :(得分:0)
第一张表格包含原始数据。右上角包含结果,下面一个包含公式
公式=IF((LEN(C2) > 5);MID(C2;6;500);" ")
检查单元格内文本的长度,如果大于5(当然可以修改它),则将单元格的值设置为子串(从第6个字符开始)原文。
答案 1 :(得分:0)
经过一些尝试后,我得到了一个VB宏,它就是
Sub copyTable()
Dim colRange As Variant
colRange = Array(1, 2, 3) 'Columns where your data is'
Dim destColRange As Variant
destColRange = Array(5, 6, 7) 'Columns where you want data be copied'
n = UBound(colRange) - LBound(colRange)
i = 2 'Initial row'
newI = i
maxLen = 10 'Maximum size allowed in one cell'
While Not (Cells(i, colRange(0)) Is Nothing) And (Cells(i, colRange(0)) <> "")
Text = Cells(i, colRange(n))
Do
For j = 0 To n - 1
Cells(newI, destColRange(j)) = Cells(i, colRange(j))
Next j
Cells(newI, destColRange(j)) = Mid(Text, 1, maxLen)
Text = Mid(Text, maxLen + 1)
newI = newI + 1
Loop Until Len(Text) <= 0
i = i + 1
Wend
End Sub
注意,此代码段仅关注最后单元格的大小,如果任何其他单元格具有更长的长度,则会按原样复制它们。
我从来没有制作过VB代码,所以不要批评,肯定会更好