从技术上讲,我正在寻找的解决方案是尽量减少实际编程。我需要知道是否有可以从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可以肯定地说。
答案 0 :(得分:0)
我假设第一个列表将位于底部的员工位置。那里没有其他名单。假设:逻辑上你需要编码
numberOfColumns:计算A列(位置列)中单元格不为空白的单元格减去1.这将给出员工数量(不包括位置单元格)。
numberOfRows:计算经过的单元格数(第1行)。这将是能力单元格数减1(不包括位置单元格)。
competancyColumns:定义一个变量,捕获每个位置所需的能力列数。这可以通过文本框或在另一张纸上的单元格中或者例如值为2
从A1 + competancyColumns开始。在行结束后复制并剪切单元格。
从A1 + numberOfRows + 1开始。添加另一个计数器以跟踪位置(计数器),因此在第4点之后,计数器应为2(0 + competancyColumns)。 粘贴单元格(从第4点开始)
重复进程直到counter = numberOfcolumns。显然不是从A1开始,而是从你所在的那一行开始。
如果您不想使用剪切和粘贴,可以将其存储在数组中,但这可供您自行决定。
那应该是基本逻辑。