powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Преобразование значений таблицы Excel
21 сообщений из 21, страница 1 из 1
Преобразование значений таблицы Excel
    #33106902
Есть такая задачка.

Есть таблица:

11103 1001211103 1139111103 1133111143 1110111143 1137211143 1113211143 1119111151 1114211151 105

Мне надо, чтобы получилась таблица следующего вида.

11103 10012 11391 1133111143 11101 11372 11132 1119111151 11142 105

Думал, что с помощью сводной таблицы можно, но желаемого результата не получилось. Кто подскажет, как можно реализовать?
...
Рейтинг: 0 / 0
Преобразование значений таблицы Excel
    #33107519
Все. Рано или поздно я бы реализовал. Просто начальник каждые пять минут спрашивал сделал я или нет. Я подумал, что кто-то решал подобную задачу, чтобы мне не тратить время на изобретение велосипеда.

Сделал так:

1. Экспортировал данные в Access.
2. Сделал запрос с группировкой по двум этим столбцам, чтобы избежать повторений.
3. Скопировал результат запрос в Excel.
4. Сделал сводную диаграмму (в данных постовил сумму по 2-му столбцу, т.к. повторений нет, то пишутся исходные значения).
5. Скопировал данные в отдельный лист.
6. Написал макрос, которые удаляет пустые учейки со сдвигом влево, чтобы подтянуть данные.

Вот и все.
...
Рейтинг: 0 / 0
Преобразование значений таблицы Excel
    #33107551
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на будущее - функция ТРАНСП()

(VBA: VorksheetFunction.Transpose)

вариант с функцией массива в листе приложен
...
Рейтинг: 0 / 0
Преобразование значений таблицы Excel
    #33107617
Victosha , спасибо. Я подозревал, что в Excel должна быть такая функция. На будущее буду знать.
...
Рейтинг: 0 / 0
Преобразование значений таблицы Excel
    #33108205
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошу прощения, это я не на тот вопрос отвечал.
виноват, поторопился.

по теме тут ближе всего сводная таблица.
либо явно макрос рисовать на заполнения.
он простой получится.
...
Рейтинг: 0 / 0
Преобразование значений таблицы Excel
    #33108430
Victoshaпрошу прощения, это я не на тот вопрос отвечал.
виноват, поторопился.

по теме тут ближе всего сводная таблица.
либо явно макрос рисовать на заполнения.
он простой получится.

Я вообщем-то так и сделал. Сводная таблица + макрос.
...
Рейтинг: 0 / 0
Преобразование значений таблицы Excel
    #33108615
Victosha, по поводу транспонирования. Можно обойтись без формулы, а просто скопировать столбец и сделать специальную вставку.
...
Рейтинг: 0 / 0
Преобразование значений таблицы Excel
    #33108827
И еще вопрос у меня есть табличка со следующими данными:

11202 11211 11213 1137111212 11351 11353

Делаю специальную вставку "Пропускать пустые ячейки", но все остается также. В чем проблема?

А при выполнении такого кода:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
    Dim rng As Range
    Dim cel As Range
    Set rng = Selection

    For Each cel In rng
        If cel.Value = "" Then
            cel.Delete Shift:=xlToLeft
        End If
    Next cel

Получается:

11202 11211 11213 1137111212 11351 11353

Т.е. удаляются не все пустые ячейки. Может надо еще какое-нибудь условие с Offset прописать. Кто подскажет?
...
Рейтинг: 0 / 0
Преобразование значений таблицы Excel
    #33110694
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я на этот раз правильно понял "задачу", то решение (с точностью до деталей оформления)
может быть таким:

Код: plaintext
1.
2.
3.
4.
 Dim tArea As Excel.Range
  
  For Each tArea In Application.ActiveWindow.Selection
    tArea.SpecialCells(xlCellTypeBlanks).Delete xlShiftToLeft
  Next


(может быть можно быстрее, а вот красивее - вряд ли)

что же до For Each - то, с чем ты столкулся - это стандартная особенность реализации.
Некоторые склонны считать ее багом.
В любом случае, - не надо использовать For Each в комбинации с методами
манипулирования составом коллекции (добавления/удаления элементов).
Это будет работать не так, как хотелось бы, во всех случаях применения.
...
Рейтинг: 0 / 0
Преобразование значений таблицы Excel
    #33110855
Да, Victosha, это то что нужно. Но одно но, это получается бесконечный цикл.

Как я понял. Сдвигает все правильно, но в выделенном диапазоне в конце остаются пустые ячейки и из-за этого получается бесконечный цикл из которого можно выйти только по CTRL+BREAK. Как можно обойти такое зацикливание?
...
Рейтинг: 0 / 0
Преобразование значений таблицы Excel
    #33110864
Сам отвечу (надо добавить Выход в цикл):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
    Dim cel As Range
    Dim rng As Range

    Set rng = Selection

    For Each cel In rng
        cel.SpecialCells(xlCellTypeBlanks).Delete xlShiftToLeft
        Exit Sub
    Next cel
...
Рейтинг: 0 / 0
Преобразование значений таблицы Excel
    #33110974
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да нет - все гораздо хуже.
Там опять очепятка ...

идея такая была:

Dim tArea As Excel.Range

For Each tArea In Application.ActiveWindow.Selection.Areas
tArea.SpecialCells(xlCellTypeBlanks).Delete xlShiftToLeft
Next

да по дороге потерялась...
...
Рейтинг: 0 / 0
Преобразование значений таблицы Excel
    #33110995
Код: plaintext
1.
2.
    For Each cel In rng.Areas
        cel.SpecialCells(xlCellTypeBlanks).Delete xlShiftToLeft
    Next cel

Отрабатывает как надо.

Victosha , спасибо, красивое решение, а то цикл

Код: plaintext
1.
2.
3.
4.
    For Each cel In rng
        If cel.Value = "" Then
            cel.Delete Shift:=xlToLeft
        End If
    Next cel

приходилось раз 5 выполнить, чтобы все "подтянуть".
...
Рейтинг: 0 / 0
Преобразование значений таблицы Excel
    #33123004
pashulka.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А зачем вообще цикл применять … ведь для решения Вашей задачи достаточно :

Selection.SpecialCells(xlBlanks).Delete xlShiftToLeft
...
Рейтинг: 0 / 0
Преобразование значений таблицы Excel
    #33123924
pashulka.А зачем вообще цикл применять … ведь для решения Вашей задачи достаточно :

Selection.SpecialCells(xlBlanks).Delete xlShiftToLeft

Да, ты прав. Без цикла будет лучше и правильнее.
...
Рейтинг: 0 / 0
Преобразование значений таблицы Excel
    #33129503
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пользователь2 pashulka.А зачем вообще цикл применять … ведь для решения Вашей задачи достаточно :

Selection.SpecialCells(xlBlanks).Delete xlShiftToLeft

Да, ты прав. Без цикла будет лучше и правильнее.

я рисовал цикл, чтобы иметь возможность обрабатывать множество
выделенных несвязанных диапазонов. А ты зачем?
...
Рейтинг: 0 / 0
Преобразование значений таблицы Excel
    #33129516
Я рисовал цикл, чтобы проверять пуста ли ячейка в заданном диапазоне и удалять ее в случае, если она является таковой.
...
Рейтинг: 0 / 0
Преобразование значений таблицы Excel
    #33129816
pashulka.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Даже если нужно обрабатывать несколько выделенных несмежных диапазонов ячеек, то и в этом случае цикл не нужен, достаточно просто : Selection.SpecialCells(xlBlanks).Delete xlToLeft
...
Рейтинг: 0 / 0
Преобразование значений таблицы Excel
    #33130350
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pashulka.Даже если нужно обрабатывать несколько выделенных несмежных диапазонов ячеек, то и в этом случае цикл не нужен, достаточно просто : Selection.SpecialCells(xlBlanks).Delete xlToLeft

типа - лень попробовать, прежде чем писать?
и со мной так бывает...
...
Рейтинг: 0 / 0
Преобразование значений таблицы Excel
    #33130389
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victosha pashulka.Даже если нужно обрабатывать несколько выделенных несмежных диапазонов ячеек, то и в этом случае цикл не нужен, достаточно просто : Selection.SpecialCells(xlBlanks).Delete xlToLeft

типа - лень попробовать, прежде чем писать?
и со мной так бывает...

так и сейчас случилось. (со мной)
...
Рейтинг: 0 / 0
Преобразование значений таблицы Excel
    #33131011
pashulka.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To Victosha
Значит мир, дружба и много пива
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Преобразование значений таблицы Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]