Excel - 包裹给定列的行范围,第一列重复行范围

时间:2011-11-17 09:59:16

标签: excel vba layout rows

从技术上讲,我正在寻找的解决方案是尽量减少实际编程。我需要知道是否有可以从VBA调用的Excel功能,而不必自己编写整个逻辑。

想象一下以下表格:

Position   Competency1 Competency2 Competency3 Competency4
Employee1      x                                    x 
Employee2      x                        x

我需要的是以下结果:

Position   Competency1 Competency2
Employee1      x                  
Employee2      x                  

Position   Competency3 Competency4
Employee1                   x                  
Employee2      x                  

换句话说,我希望Excel向下移动列,但保留第一列。现在是复杂的一点;会有几个职位,有各种各样的员工。所以最终产品可能如下:

Position   Competency1 Competency2
Employee1      x                  
Employee2      x                  

Position   Competency3 Competency4
Employee1                   x                  
Employee2      x                  

Position2  Competency5 
Employee3      x                              
Employee4              

从数据库中提取数据,并通过VBA格式化为上述布局。每个职位的职位数量和员工/能力都是可变的。

我当然可以对整个事情进行编码,但是如果我能在Excel中抛出一些参数并让它为我做这件事,它会让我的生活变得更轻松。问题是,我发现的相关功能似乎是单页范围的,而我需要能够指定多组行和列。

我宁愿怀疑答案是:“把它吸干然后编码”。但我不知道足够的Excel可以肯定地说。

1 个答案:

答案 0 :(得分:0)

我假设第一个列表将位于底部的员工位置。那里没有其他名单。假设:逻辑上你需要编码

  1. numberOfColumns:计算A列(位置列)中单元格不为空白的单元格减去1.这将给出员工数量(不包括位置单元格)。

  2. numberOfRows:计算经过的单元格数(第1行)。这将是能力单元格数减1(不包括位置单元格)。

  3. competancyColumns:定义一个变量,捕获每个位置所需的能力列数。这可以通过文本框或在另一张纸上的单元格中或者例如值为2

  4. 从A1 + competancyColumns开始。在行结束后复制并剪切单元格。

  5. 从A1 + numberOfRows + 1开始。添加另一个计数器以跟踪位置(计数器),因此在第4点之后,计数器应为2(0 + competancyColumns)。 粘贴单元格(从第4点开始)

  6. 重复进程直到counter = numberOfcolumns。显然不是从A1开始,而是从你所在的那一行开始。

    如果您不想使用剪切和粘贴,可以将其存储在数组中,但这可供您自行决定。

    那应该是基本逻辑。