从Excel表到另一个表

假设有3列。 在1列号(a1)中,在第二个名称(b1)中,在第三个描述(c1)中。 我想再做一个表,这样数据就会传播到它,但有1个条件。 如果在3列中,在一个单元格中超过500个字符,则继续将行中的数据复制到下一个单元格。 (例如,有一行a2,b2,c2在单元格c2中,获得600个符号,然后剩下的字符被转移到一个单元格c3,并从单元格a2,b2复制文本)是否有可能跟踪它? 为了制造一些计数器,他会计算单元格中的符号。 在这里input图像说明

tabletest1

VBmacros

经过一番尝试,我得到了一个VBmacros,这使得

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 

variables的解释

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

请注意 ,这个代码片段只关心最后一个单元格的大小,如果有其他单元格的长度更长,它将按原样复制它们。

当你运行它时,你会得到类似的东西 在这里输入图像说明

我从来没有做过一个VB代码,所以不要做批评,它肯定会更好

那么,我认为这个形象将是自我解释 ![在这里输入图片描述

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

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