|
|
|
Преобразование значений таблицы Excel
|
|||
|---|---|---|---|
|
#18+
Есть такая задачка. Есть таблица: 11103 1001211103 1139111103 1133111143 1110111143 1137211143 1113211143 1119111151 1114211151 105 Мне надо, чтобы получилась таблица следующего вида. 11103 10012 11391 1133111143 11101 11372 11132 1119111151 11142 105 Думал, что с помощью сводной таблицы можно, но желаемого результата не получилось. Кто подскажет, как можно реализовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2005, 12:21:01 |
|
||
|
Преобразование значений таблицы Excel
|
|||
|---|---|---|---|
|
#18+
Все. Рано или поздно я бы реализовал. Просто начальник каждые пять минут спрашивал сделал я или нет. Я подумал, что кто-то решал подобную задачу, чтобы мне не тратить время на изобретение велосипеда. Сделал так: 1. Экспортировал данные в Access. 2. Сделал запрос с группировкой по двум этим столбцам, чтобы избежать повторений. 3. Скопировал результат запрос в Excel. 4. Сделал сводную диаграмму (в данных постовил сумму по 2-му столбцу, т.к. повторений нет, то пишутся исходные значения). 5. Скопировал данные в отдельный лист. 6. Написал макрос, которые удаляет пустые учейки со сдвигом влево, чтобы подтянуть данные. Вот и все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2005, 15:47:13 |
|
||
|
Преобразование значений таблицы Excel
|
|||
|---|---|---|---|
|
#18+
на будущее - функция ТРАНСП() (VBA: VorksheetFunction.Transpose) вариант с функцией массива в листе приложен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2005, 15:58:32 |
|
||
|
Преобразование значений таблицы Excel
|
|||
|---|---|---|---|
|
#18+
Victosha , спасибо. Я подозревал, что в Excel должна быть такая функция. На будущее буду знать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2005, 16:25:34 |
|
||
|
Преобразование значений таблицы Excel
|
|||
|---|---|---|---|
|
#18+
прошу прощения, это я не на тот вопрос отвечал. виноват, поторопился. по теме тут ближе всего сводная таблица. либо явно макрос рисовать на заполнения. он простой получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2005, 21:34:26 |
|
||
|
Преобразование значений таблицы Excel
|
|||
|---|---|---|---|
|
#18+
Victoshaпрошу прощения, это я не на тот вопрос отвечал. виноват, поторопился. по теме тут ближе всего сводная таблица. либо явно макрос рисовать на заполнения. он простой получится. Я вообщем-то так и сделал. Сводная таблица + макрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2005, 08:42:08 |
|
||
|
Преобразование значений таблицы Excel
|
|||
|---|---|---|---|
|
#18+
Victosha, по поводу транспонирования. Можно обойтись без формулы, а просто скопировать столбец и сделать специальную вставку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2005, 10:07:36 |
|
||
|
Преобразование значений таблицы Excel
|
|||
|---|---|---|---|
|
#18+
И еще вопрос у меня есть табличка со следующими данными: 11202 11211 11213 1137111212 11351 11353 Делаю специальную вставку "Пропускать пустые ячейки", но все остается также. В чем проблема? А при выполнении такого кода: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Получается: 11202 11211 11213 1137111212 11351 11353 Т.е. удаляются не все пустые ячейки. Может надо еще какое-нибудь условие с Offset прописать. Кто подскажет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2005, 11:09:53 |
|
||
|
Преобразование значений таблицы Excel
|
|||
|---|---|---|---|
|
#18+
Если я на этот раз правильно понял "задачу", то решение (с точностью до деталей оформления) может быть таким: Код: plaintext 1. 2. 3. 4. (может быть можно быстрее, а вот красивее - вряд ли) что же до For Each - то, с чем ты столкулся - это стандартная особенность реализации. Некоторые склонны считать ее багом. В любом случае, - не надо использовать For Each в комбинации с методами манипулирования составом коллекции (добавления/удаления элементов). Это будет работать не так, как хотелось бы, во всех случаях применения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2005, 23:48:04 |
|
||
|
Преобразование значений таблицы Excel
|
|||
|---|---|---|---|
|
#18+
Да, Victosha, это то что нужно. Но одно но, это получается бесконечный цикл. Как я понял. Сдвигает все правильно, но в выделенном диапазоне в конце остаются пустые ячейки и из-за этого получается бесконечный цикл из которого можно выйти только по CTRL+BREAK. Как можно обойти такое зацикливание? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 08:36:08 |
|
||
|
Преобразование значений таблицы Excel
|
|||
|---|---|---|---|
|
#18+
Сам отвечу (надо добавить Выход в цикл): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 08:40:52 |
|
||
|
Преобразование значений таблицы Excel
|
|||
|---|---|---|---|
|
#18+
Да нет - все гораздо хуже. Там опять очепятка ... идея такая была: Dim tArea As Excel.Range For Each tArea In Application.ActiveWindow.Selection.Areas tArea.SpecialCells(xlCellTypeBlanks).Delete xlShiftToLeft Next да по дороге потерялась... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 09:37:47 |
|
||
|
Преобразование значений таблицы Excel
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. Отрабатывает как надо. Victosha , спасибо, красивое решение, а то цикл Код: plaintext 1. 2. 3. 4. приходилось раз 5 выполнить, чтобы все "подтянуть". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 09:45:59 |
|
||
|
Преобразование значений таблицы Excel
|
|||
|---|---|---|---|
|
#18+
А зачем вообще цикл применять … ведь для решения Вашей задачи достаточно : Selection.SpecialCells(xlBlanks).Delete xlShiftToLeft ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2005, 07:42:38 |
|
||
|
Преобразование значений таблицы Excel
|
|||
|---|---|---|---|
|
#18+
pashulka.А зачем вообще цикл применять … ведь для решения Вашей задачи достаточно : Selection.SpecialCells(xlBlanks).Delete xlShiftToLeft Да, ты прав. Без цикла будет лучше и правильнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2005, 08:50:19 |
|
||
|
Преобразование значений таблицы Excel
|
|||
|---|---|---|---|
|
#18+
Пользователь2 pashulka.А зачем вообще цикл применять … ведь для решения Вашей задачи достаточно : Selection.SpecialCells(xlBlanks).Delete xlShiftToLeft Да, ты прав. Без цикла будет лучше и правильнее. я рисовал цикл, чтобы иметь возможность обрабатывать множество выделенных несвязанных диапазонов. А ты зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2005, 16:49:53 |
|
||
|
Преобразование значений таблицы Excel
|
|||
|---|---|---|---|
|
#18+
Я рисовал цикл, чтобы проверять пуста ли ячейка в заданном диапазоне и удалять ее в случае, если она является таковой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2005, 16:54:11 |
|
||
|
Преобразование значений таблицы Excel
|
|||
|---|---|---|---|
|
#18+
Даже если нужно обрабатывать несколько выделенных несмежных диапазонов ячеек, то и в этом случае цикл не нужен, достаточно просто : Selection.SpecialCells(xlBlanks).Delete xlToLeft ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2005, 18:40:58 |
|
||
|
Преобразование значений таблицы Excel
|
|||
|---|---|---|---|
|
#18+
pashulka.Даже если нужно обрабатывать несколько выделенных несмежных диапазонов ячеек, то и в этом случае цикл не нужен, достаточно просто : Selection.SpecialCells(xlBlanks).Delete xlToLeft типа - лень попробовать, прежде чем писать? и со мной так бывает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2005, 09:39:21 |
|
||
|
Преобразование значений таблицы Excel
|
|||
|---|---|---|---|
|
#18+
Victosha pashulka.Даже если нужно обрабатывать несколько выделенных несмежных диапазонов ячеек, то и в этом случае цикл не нужен, достаточно просто : Selection.SpecialCells(xlBlanks).Delete xlToLeft типа - лень попробовать, прежде чем писать? и со мной так бывает... так и сейчас случилось. (со мной) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2005, 09:58:35 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=33110864&tid=2185977]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
53ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 192ms |
| total: | 313ms |

| 0 / 0 |
