Excel - Перенос диапазона строк в данном столбце, причем первый столбец повторяется для диапазона строк - PullRequest
0 голосов
/ 17 ноября 2011

Технически, решение, которое я ищу, состоит в том, чтобы минимизировать фактическое программирование.Мне нужно знать, есть ли функциональность Excel, которую я могу вызвать из VBA, вместо того, чтобы самому кодировать всю логику.

Представьте себе следующий лист:

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 голосов
/ 17 ноября 2011

Я предполагаю, что первым списком будет позиция с сотрудниками внизу.И что никаких других списков там нет.Предполагая, что это: вот логически то, что вам нужно кодировать

  1. numberOfColumns: подсчитать количество ячеек, идущих вниз, где ячейка не пуста в столбце A (столбец позиции) минус 1. Это дастколичество сотрудников (исключая ячейку Позиция).

  2. numberOfRows: подсчитать количество проходящих ячеек (строка 1).Это будет количество ячеек компетенции минус 1 (исключая ячейку позиции).

  3. CompetancyColumns: определите переменную, определяющую, сколько столбцов компетенций им нужно для каждой позиции.Это может быть через текстовое поле или в ячейке на другом листе или что-то, например, значение 2

  4. Начать с A1 + CompetancyColumns.Скопируйте и обрежьте ячейки после конца строки.

  5. Начните с A1 + numberOfRows + 1. Добавьте еще один счетчик, чтобы отслеживать положение (счетчик), чтобы после точки 4 счетчик показывал 2(0 + конкуренция столбцов).Вставьте ячейки (из точки 4)

Повторяйте процесс до тех пор, пока счетчик не = число столбцов.Очевидно, не начиная с А1, но с той строки, в которой вы были.

Вы можете сохранить его в массиве, если не хотите использовать вырезание и вставку, но это вам решать.

ТАК это должно быть основной логикой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...