如何在一组数据后自动插入空行

时间:2013-03-14 18:39:04

标签: excel vba rollup blank-line

我在下面创建了一个与excel中的表格类似的示例表,它应该用于说明问题。我想在column1中的每个不同数据之后添加一行(最简单的方法,使用excel,谢谢)。

_

CURRENT TABLE:

column1   |   column2   |  column3
----------------------------------
  A       |     small   |  blue
  A       |     small   |  orange
  A       |     small   |  yellow
  B       |     med     |  yellow
  B       |     med     |  blue
  C       |     large   |  green
  D       |     large   |  green
  D       |     small   |  pink

_

渴望的表

注意:每个不同列1之后的空白行

column1   |   column2   |  column3
----------------------------------
  A       |     small   |  blue
  A       |     small   |  orange
  A       |     small   |  yellow

  B       |     med     |  yellow
  B       |     med     |  blue

  C       |     large   |  green

  D       |     large   |  green
  D       |     small   |  pink

7 个答案:

答案 0 :(得分:15)

这完全符合您的要求,检查行,并在A列的每次更改中插入空行

sub AddBlankRows()
'
dim iRow as integer, iCol as integer
dim oRng as range

set oRng=range("a1")

irow=oRng.row
icol=oRng.column

do 
'
if cells(irow+1, iCol)<>cells(irow,iCol) then
    cells(irow+1,iCol).entirerow.insert shift:=xldown
    irow=irow+2
else
    irow=irow+1
end if
'
loop while not cells (irow,iCol).text=""
'
end sub

我希望能让你开始,让我们知道!

菲利普

答案 1 :(得分:1)

想出来。

第1步

在column1的左侧放置一个新列并复制+粘贴以下公式

= B2 = B3

= B3 = B4

= B4 = B5

...一直到底部(假设这里的B列是原始问题中的column1)。

此公式计算下一行是否为column1中的新值。打开结果,您将获得TRUE或FALSE。将这些结果复制并粘贴为值,然后将“FALSE”替换为nil,将“TRUE”替换为0.5

第2步

然后将只有0.5的列添加到column1,这将产生下表:

  newcolumn0  |   column1 ("B") |   column2   |  column3
-----------------------------------------------------
              |     1           |     small   |  blue
              |     1           |     small   |  orange
      1.5     |     1           |     small   |  yellow
              |     2           |     med     |  yellow
      2.5     |     2           |     med     |  blue
      3.5     |     3           |     large   |  green
              |     4           |     large   |  green
      4.5     |     4           |     small   |  pink

第3步

最后,复制并粘贴column1中值下面的newcolumn0的值,然后按column1对表进行排序,你应该在column1中的每个不同的整数之间有一个空行,表格如下:

    newcolumn0   |  column1 ("B")  |   column2       |  column3
---------------------------------------------------------------
                 |     1           |     small   |  blue
                 |     1           |     small   |  orange
        1.5      |     1.5         |             |
                 |     1           |     small   |  yellow
                 |     2           |     med     |  yellow
                 |     2           |     med     |  blue
        2.5      |     2.5         |             |
                 |     3           |     large   |  green
        3.5      |     3.5         |             |
                 |     4           |     large   |  green
                 |     4           |     small   |  pink
        4.5      |     4.5         |             |

替代解决方案(仍然没有VBA)

  1. 将值1列1,行2(假设这是A2)
  2. 将此公式放入A3 =IF(B3=B2,A2,A2+1)并将此公式复制+粘贴到第2列的其余部分
  3. 然后将第1列中的所有值复制并粘贴到新的temp excel表中,删除重复项,然后将0.5添加到所有数字,然后将这些值粘贴到第1列数据下方原始电子表格中的值下方,粘贴所有数据在列中作为值,然后按该列排序,删除临时Excel工作表

答案 2 :(得分:1)

选择您的阵列,包括列标签,DATA&gt;大纲-Subtotal,每次更改时:column1,使用函数:Count,将小计添加到:column3,选中Replace current subtotals and Summary of Summary数据,OK。

过滤并选择Column1,Text Filters,Contains ...,Count,OK。选择除标签以外的所有可见内容并删除内容。删除过滤器,如果需要,还可以取消组合行。

答案 3 :(得分:1)

如果数据不是连续的(1 2 3 4但是5 7 3 1 5),这将无法工作,因为在这种情况下您无法对其进行排序。

以下是我如何为我解决这个问题:

列每个数字之间需要包含5行的初始数据 - 五 4 6 8 9

B栏 - 1 2 3 4 五 (最后一个数字表示A列中数字之间需要的空行数)B列中的复制粘贴1-5,只要您在A列中有数字。

在D1类型1中跳转到D列。在D2中键入此公式 - =IF(B2=1,1+D1,D1) 将其拖动到与B列相同的长度。

返回C列 - 在C1单元格中键入此公式 - =IF(B1=1,INDIRECT("a"&(D1)),"")。拖动它,我们完成了。现在在C列中,我们使用与A列相同的数字序列,分别由4行分配。

答案 4 :(得分:0)

只是一个想法,如果你知道上面提到的小,中,大类别......

在工作表的底部,创建3行,只说小,中,大,将字体更改为白色,然后排序,使其按字母顺序排列,在每个部分之间放置一个空行。

答案 5 :(得分:0)

  1. 在表格的左侧插入一列&#39;控制&#39;
  2. 将数据编号为1到1000(假设有1000行)
  3. 将关键字段复制到另一个工作表并删除重复项
  4. 在第1000条记录
  5. 之后,将唯一的行项目复制到主工作表
  6. 在&#39; Control&#39;列,将数字1001添加到所有唯一记录
  7. 对数据(包括添加的记录)进行排序,首先在关键字段中排序,然后在“控制”字段上排序。
  8. 添加一个空白行(包含关键字段中的数据和&#39;控制&#39;)

答案 6 :(得分:-1)

我在excel有一个大文件,涉及购买和出售共同基金单位。工作表中的行数超过4000.我没有使用VBA的经验,并且希望使用基本的Excel。从上面提出的解决方案中获取提示,我尝试以下列方式解决问题(自动插入空行):

  1. 我根据控制字段对文件进行了排序
  2. 我在文件中添加了一列
  3. 我使用&#34; IF&#34;用于确定控制数据何时发生变化。
  4. 如果有变化,结果将显示&#34;是&#34;否则&#34;否&#34;
  5. 然后我将数据过滤到所有&#34;是&#34;项目
  6. 我复制了共同基金名称,对开页号等(没有财务数据)
  7. 然后我删除了过滤器并再次对文件进行了排序。结果是在所需位置添加了一行。 (它不完全是一个空白行,因为如果它是完全空白的,则排序不会将行放在所需的位置。)
  8. 排序后,您可以轻松删除所有值以获得完全空白的行。
  9. 这种方法也可以由读者尝试。