从Excel到另一个表的表

时间:2017-11-14 07:07:41

标签: excel

假设有3列。在1列号(a1)中,在第二个名称(b1)中,在第三个描述中(c1)。我想创建另一个表,以便数据传播到它,但有1个条件。如果在3列中,在一个单元格中超过500个字符,则继续将数据从行复制到下一个单元格。 (例如,有一条线a2,b2,c2在单元格c2中,获得600个符号,然后将剩余的字符转移到一个单元格,c3并从单元格a2,b2复制文本)是否可以跟踪它?一些反击,他会计算单元格中的符号。 enter image description here

table

tabletest1

2 个答案:

答案 0 :(得分:0)

嗯,我认为这张图片将是自我解释的 ![enter image description here

第一张表格包含原始数据。右上角包含结果,下面一个包含公式

公式=IF((LEN(C2) > 5);MID(C2;6;500);" ")检查单元格内文本的长度,如果大于5(当然可以修改它),则将单元格的值设置为子串(从第6个字符开始)原文。

答案 1 :(得分:0)

VB宏

经过一些尝试后,我得到了一个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

变量说明

  • colRange :包含原始数据的列的索引
  • destColRange :将写入数据的列的索引
  • i :初始行
  • maxLen :每个单元格允许的最大长度

注意,此代码段仅关注最后单元格的大小,如果任何其他单元格具有更长的长度,则会按原样复制它们。

当你运行它时,你会得到类似的东西 enter image description here

我从来没有制作过VB代码,所以不要批评,肯定会更好