1 / 1 / 0 Регистрация: 14.04.2014 Сообщений: 40 |
|
1 |
|
07.05.2014, 15:47. Показов 12376. Ответов 19
Собсетвено есть данные в столбцах А , В , С , D.
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
07.05.2014, 15:47 |
19 |
15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
|
07.05.2014, 15:56 |
2 |
Banzayl2w, запишите макрорекордером действия: выделить ст. С, Ctrl+X, выделить ст. В, Вставить — Вставить вырезанные ячейки.
0 |
1 / 1 / 0 Регистрация: 14.04.2014 Сообщений: 40 |
|
07.05.2014, 16:07 [ТС] |
3 |
надо бы довести «до ума» через получившиеся макросы вручную в VB Добавлено через 2 минуты
0 |
OLEGOFF 1062 / 506 / 137 Регистрация: 27.02.2013 Сообщений: 1,451 |
||||
07.05.2014, 16:28 |
4 |
|||
Попробуй так
Через любой свободный столбец
0 |
1 / 1 / 0 Регистрация: 14.04.2014 Сообщений: 40 |
|
07.05.2014, 16:35 [ТС] |
5 |
нет все столбцы забиты данными нужно данные столбца D поменять с данными столбца А, просто перенести местами
0 |
OLEGOFF 1062 / 506 / 137 Регистрация: 27.02.2013 Сообщений: 1,451 |
||||
07.05.2014, 17:14 |
6 |
|||
Так что-ли?
0 |
Казанский 15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
||||||||
07.05.2014, 17:49 |
7 |
|||||||
как вы говорите делать данные куда вставляешь теряются Неправда! Вот записанный макрос:
Для решения учебного задания этого достаточно. Если убрать лишнее, то так:
1 |
1 / 1 / 0 Регистрация: 14.04.2014 Сообщений: 40 |
|
08.05.2014, 11:44 [ТС] |
8 |
Не работает макрос не переносит (
1 |
6875 / 2807 / 533 Регистрация: 19.10.2012 Сообщений: 8,562 |
|
08.05.2014, 11:49 |
9 |
Не буду спорить — но счёт 2:1 не в Вашу пользу — у меня и Алексея работает По макросу OLEGOFF аналогично 2:1
0 |
1 / 1 / 0 Регистрация: 14.04.2014 Сообщений: 40 |
|
08.05.2014, 12:21 [ТС] |
10 |
файл ниже вот нужно поменять столбец A cо столбцом D местами, и код не хочет работать)
0 |
6875 / 2807 / 533 Регистрация: 19.10.2012 Сообщений: 8,562 |
|
08.05.2014, 12:53 |
11 |
И где тот код, который не хочет работать?
0 |
1 / 1 / 0 Регистрация: 14.04.2014 Сообщений: 40 |
|
08.05.2014, 12:59 [ТС] |
12 |
ниже
0 |
6875 / 2807 / 533 Регистрация: 19.10.2012 Сообщений: 8,562 |
|
08.05.2014, 13:00 |
13 |
Вообще понятно — уж сколько говорено, что объединение ячеек — эло! Повторю ещё раз.
0 |
1 / 1 / 0 Регистрация: 14.04.2014 Сообщений: 40 |
|
08.05.2014, 13:04 [ТС] |
14 |
тоесть никак не решить эту задачу? с переносом данных из одного столбца в другой?
0 |
Hugo121 6875 / 2807 / 533 Регистрация: 19.10.2012 Сообщений: 8,562 |
||||
08.05.2014, 13:04 |
15 |
|||
Только сперва уберите объединение в A!
1 |
Казанский 15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
||||
08.05.2014, 13:06 |
16 |
|||
Сообщение было отмечено Banzayl2w как решение РешениеС автоматическим снятием объединения ячеек в задействованных столбцах
1 |
6875 / 2807 / 533 Регистрация: 19.10.2012 Сообщений: 8,562 |
|
08.05.2014, 13:07 |
17 |
Сообщение было отмечено Banzayl2w как решение Решение И чего не все варианты пробовали? Вариант через массив работает «из коробки», только диапазоны изменить, и объединения не мешают.
1 |
1 / 1 / 0 Регистрация: 14.04.2014 Сообщений: 40 |
|
08.05.2014, 13:14 [ТС] |
18 |
Огромное спасибо!
0 |
1062 / 506 / 137 Регистрация: 27.02.2013 Сообщений: 1,451 |
|
08.05.2014, 13:24 |
19 |
У меня все работает…?
0 |
1 / 1 / 0 Регистрация: 14.04.2014 Сообщений: 40 |
|
08.05.2014, 13:26 [ТС] |
20 |
Да, все работает!
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
08.05.2014, 13:26 |
Помогаю со студенческими работами здесь Макрос VBA Создать макрос , доступный во всей рабочей книге, в Макрос.VBA Макрос VBA Перемещение с переименованием файлов в vba Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 20 |
Вставка диапазона со сдвигом ячеек вправо или вниз методом Insert объекта Range. Вставка и перемещение строк и столбцов из кода VBA Excel. Примеры.
Range.Insert – это метод, который вставляет диапазон пустых ячеек (в том числе одну ячейку) на рабочий лист Excel в указанное место, сдвигая существующие в этом месте ячейки вправо или вниз. Если в буфере обмена содержится объект Range, то вставлен будет он со своими значениями и форматами.
Синтаксис
Expression.Insert(Shift, CopyOrigin) |
Expression – выражение (переменная), возвращающее объект Range.
Параметры
Параметр | Описание | Значения |
---|---|---|
Shift | Необязательный параметр. Определяет направление сдвига ячеек. Если параметр Shift опущен, направление выбирается в зависимости от формы* диапазона. | xlShiftDown (-4121) – ячейки сдвигаются вниз; xlShiftToRight (-4161) – ячейки сдвигаются вправо. |
CopyOrigin | Необязательный параметр. Определяет: из каких ячеек копировать формат. По умолчанию формат копируется из ячеек сверху или слева. | xlFormatFromLeftOrAbove (0) – формат копируется из ячеек сверху или слева; xlFormatFromRightOrBelow (1) – формат копируется из ячеек снизу или справа. |
* Если диапазон горизонтальный или квадратный (количество строк меньше или равно количеству столбцов), ячейки сдвигаются вниз. Если диапазон вертикальный (количество строк больше количества столбцов), ячейки сдвигаются вправо.
Примеры
Простая вставка диапазона
Вставка диапазона ячеек в диапазон «F5:K9» со сдвигом исходных ячеек вправо:
Range(«F5:K9»).Insert Shift:=xlShiftToRight |
Если бы параметр Shift не был указан, сдвиг ячеек, по умолчанию, произошел бы вниз, так как диапазон горизонтальный.
Вставка вырезанного диапазона
Вставка диапазона, вырезанного в буфер обмена методом Range.Cut, из буфера обмена со сдвигом ячеек по умолчанию:
Range(«A1:B6»).Cut Range(«D2»).Insert |
Обратите внимание, что при использовании метода Range.Cut, точка вставки (в примере: Range("D2")
) не может находится внутри вырезанного диапазона, а также в строке или столбце левой верхней ячейки вырезанного диапазона вне вырезанного диапазона (в примере: строка 1 и столбец «A»).
Вставка скопированного диапазона
Вставка диапазона, скопированного в буфер обмена методом Range.Copy, из буфера обмена со сдвигом ячеек по умолчанию:
Range(«B2:D10»).Copy Range(«F2»).Insert |
Обратите внимание, что при использовании метода Range.Copy, точка вставки (в примере: Range("F2")
) не может находится внутри скопированного диапазона, но в строке или столбце левой верхней ячейки скопированного диапазона вне скопированного диапазона находится может.
Вставка и перемещение строк
Вставка одной строки на место пятой строки со сдвигом исходной строки вниз:
Вставка четырех строк на место пятой-восьмой строк со сдвигом исходных строк вниз:
Вставка строк с использованием переменных, указывающих над какой строкой осуществить вставку и количество вставляемых строк:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Sub Primer1() Dim n As Long, k As Long, s As String ‘Номер строки, над которой необходимо вставить строки n = 8 ‘Количесто вставляемых строк k = 4 ‘Указываем адрес диапазона строк s = n & «:» & (n + k — 1) ‘Вставляем строки Rows(s).Insert End Sub ‘или то же самое с помощью цикла Sub Primer2() Dim n As Long, k As Long, i As Long n = 8 k = 4 For i = 1 To k Rows(n).Insert Next End Sub |
Перемещение второй строки на место шестой строки:
Rows(2).Cut Rows(6).Insert |
Вторая строка окажется на месте пятой строки, так как третья строка заместит вырезанную вторую строку, четвертая встанет на место третьей и т.д.
Перемещение шестой строки на место второй строки:
Rows(6).Cut Rows(2).Insert |
В этом случае шестая строка окажется на месте второй строки.
Вставка и перемещение столбцов
Вставка одного столбца на место четвертого столбца со сдвигом исходного столбца вправо:
Вставка трех столбцов на место четвертого-шестого столбцов со сдвигом исходных столбцов вправо:
Перемещение третьего столбца на место седьмого столбца:
Columns(3).Cut Columns(7).Insert |
Третий столбец окажется на месте шестого столбца, так как четвертый столбец заместит вырезанный третий столбец, пятый встанет на место четвертого и т.д.
Перемещение седьмого столбца на место третьего столбца:
Columns(7).Cut Columns(3).Insert |
В этом случае седьмой столбец окажется на месте третьего столбца.
Перемещение столбцов без копирования |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
irina_iv Пользователь Сообщений: 21 |
#1 29.12.2018 10:02:44 Уважаемые программисты, можно ли к Вам обратиться помочь доработать код?
На листе2 показано, как это должно выглядеть. Прикрепленные файлы
Изменено: irina_iv — 29.12.2018 10:05:27 |
||
Kuzmich Пользователь Сообщений: 7998 |
У меня ваш архив не открылся. |
irina_iv Пользователь Сообщений: 21 |
Вот так примерно… Изменено: irina_iv — 29.12.2018 14:46:45 |
Kuzmich Пользователь Сообщений: 7998 |
#4 29.12.2018 15:01:52
При активации какого листа срабатывает макрос?
В книге нет Листа1 |
||||
RAN Пользователь Сообщений: 7091 |
Удалить из каждой таблицы по 1500 строк — такая проблема? Тогда, глядишь, и для макросов место найдется. |
Dima S Пользователь Сообщений: 2063 |
у кого то из форумчан была очень актуальная для вашего файла подпись: «если автоматизировать бардак, то получится автоматизированный бардак». |
irina_iv Пользователь Сообщений: 21 |
Ну, Вы, конечно, шутники…Я и вправду удалила (случайно) лист1, хотя он там нужен. Но «бардаком» я бы не стала это называть: во-первых, я новичок, во-вторых, это таблицы, а разве можно таблицы назвать бардаком?.. Прикрепленные файлы
|
Anchoret Пользователь Сообщений: 1061 Anchoret |
irina_iv, Не равнодушным людям трудно понять в Вашем файле чего Вы собственно хотите. |
Nordheim Пользователь Сообщений: 3154 |
А можете сделать файл на одном листе таблица 10х10 (рога, копыта), на другом , то как она должна выглядеть после копирования. В Вашем макросе нет желания разбирать ошибки. «Все гениальное просто, а все простое гениально!!!» |
irina_iv Пользователь Сообщений: 21 |
Конечно. Два столбца «ФИО агента» и «Адрес» переносятся с листа «details» на «Лист1» и находятся рядом, остальные столбцы «аванс», «зп1-зп10» — переносятся на лист «Лист1» через один столбец (чтобы между можно было вписывать даты). То есть все должно выглядеть как на листе ‘pre’. Было бы замечательно, если можно было бы сделать форматирование как на листе «pre» на листе1. (цвета, толщина, центрирование и т.д.). Конечно, не мучайтесь . Я на этот код потратила недели 2, и он еще не работает… Изменено: irina_iv — 09.01.2019 15:04:42 |
Nordheim Пользователь Сообщений: 3154 |
Немного не понятно, зачем копировать столбцы, копируйте весь лист, затем вставьте столбцы где вам нужно, а лишнее удалите. Если таблица имеет одинаковую структуру всегда, то можно макрорекодером записать макрос, а после лишнее удалить. Изменено: Nordheim — 09.01.2019 15:11:19 «Все гениальное просто, а все простое гениально!!!» |
irina_iv Пользователь Сообщений: 21 |
Ну, можно, конечно, и так сделать. А как у меня будут тогда добавляться новые значения? Каждый раз заново копировать лист? |
Nordheim Пользователь Сообщений: 3154 |
#13 09.01.2019 15:34:01
А как они у Вас сейчас добавляются, или будут добавляться после копирования?
Т.е. макросы писать можете, а макрорекодером пользоваться не умеете? Как это так? «Все гениальное просто, а все простое гениально!!!» |
||||
Nordheim Пользователь Сообщений: 3154 |
Наверно копирование листа вам не подойдет, если у Вас уже будут заполнены доп столбцы «Все гениальное просто, а все простое гениально!!!» |
irina_iv Пользователь Сообщений: 21 |
Да, здесь бы лучше циклом или еще как-то, как быстро и точно… |
Nordheim Пользователь Сообщений: 3154 |
#16 09.01.2019 15:46:03
Нет. Но на вскидку, это к чему относится?
«Все гениальное просто, а все простое гениально!!!» |
||||
Anchoret Пользователь Сообщений: 1061 Anchoret |
#17 09.01.2019 16:19:59 irina_iv, пробуйте (не тестировал, т.к. не хватило времени — на работе). Предполагается, что лист с индесом 1 — лист с исходными данными, с индексом 3 — место выгрузки:
Изменено: Anchoret — 10.01.2019 10:33:35 |
||
Nordheim Пользователь Сообщений: 3154 |
#18 09.01.2019 16:23:34 Вариант для файла из сообщения №3
«Все гениальное просто, а все простое гениально!!!» |
||
irina_iv Пользователь Сообщений: 21 |
Anchoret, Nordheim, |
Nordheim Пользователь Сообщений: 3154 |
#20 10.01.2019 10:32:04
Совершенно верно. «Все гениальное просто, а все простое гениально!!!» |
||
Anchoret Пользователь Сообщений: 1061 Anchoret |
irina_iv, да, там была ошибка и не одна. Изменил код выше. Лист выгрузки теперь имеет индекс 4. Соответственно все индексы листов можно переименовать названиями реальных листов. П.С.: Есть один нюанс — если даты планировалось вводить вручную и вне зависимости от времени запуска этого макроса, то грусть-печаль. Макрос затирает при выгрузке все данные под выгружаемой таблицей. |
irina_iv Пользователь Сообщений: 21 |
Да, Anchoret. данные планировалось по датам вводить вручную. То есть просто скопировать с интервалом столбцы (кроме первых двух)… |
Anchoret Пользователь Сообщений: 1061 Anchoret |
#23 10.01.2019 11:37:36 irina_iv, по сути код идентичный коду от Nordheim, только не очень читабельный :
Изменено: Anchoret — 10.01.2019 12:08:28 |
||
Nordheim Пользователь Сообщений: 3154 |
#24 10.01.2019 12:18:05
Возможно так будет более «читабелно»
«Все гениальное просто, а все простое гениально!!!» |
|||
Anchoret Пользователь Сообщений: 1061 Anchoret |
Nordheim, точно) |
Nordheim Пользователь Сообщений: 3154 |
Есть подозрение что irina_iv, на примере макросов по этой задаче, продолжит изучение VBA, что то почерпнет, увидит ошибки допущенные в собственном коде, и попытается в дальнейшем, продолжить автоматизацию работы в Excel. «Все гениальное просто, а все простое гениально!!!» |
irina_iv Пользователь Сообщений: 21 |
Можно Вас, Anchoret, Nordheim еще немного помучать? |
irina_iv Пользователь Сообщений: 21 |
|
Nordheim Пользователь Сообщений: 3154 |
Честно говоря, какая то ерунда получается, наверно следует таблицы , как то более грамотно составить, или я чего то не понимаю. «Все гениальное просто, а все простое гениально!!!» |
Anchoret Пользователь Сообщений: 1061 Anchoret |
#30 10.01.2019 14:11:23 irina_iv, рыба закончилась, настала пора удочки: |
В этой статье я представляю код VBA для переноса столбцов в строки и вставки новых строк для заполнения данных, как показано на скриншоте ниже. Если вас интересует эта операция, перейдите по ссылке ниже для получения дополнительных сведений.
Транспонировать и вставлять строки с помощью VBA
Транспонировать и вставлять строки с помощью VBA
Нет прямого способа транспонировать диапазон и вставлять строки для заполнения тех же данных, но здесь я могу ввести код VBA для быстрого решения этой задачи.
1. Нажмите Alt + F11 ключи для открытия Microsoft Visual Basic для приложений окно.
2. Нажмите Вставить > Модулии вставьте под кодом VBA в окно модуля. Смотрите скриншот:
VBA: транспонировать и вставлять строки.
Sub TransposeInsertRows()
'UpdatebyExtendoffice20161125
Dim xRg As Range
Dim i As Long, j As Long, k As Long
Dim x As Long, y As Long
Set xRg = Application.InputBox _
(Prompt:="Range Selection...", _
Title:="Kutools For Excel", Type:=8)
Application.ScreenUpdating = False
x = xRg(1, 1).Column + 2
y = xRg(1, xRg.Columns.Count).Column
For i = xRg(xRg.Rows.Count, 1).Row To xRg(1, 1).Row Step -1
If Cells(i, x) <> "" And Cells(i, x + 1) <> "" Then
k = Cells(i, x - 2).End(xlToRight).Column
If k > y Then k = y
For j = k To x + 1 Step -1
Cells(i + 1, 1).EntireRow.Insert
With Cells(i + 1, x - 2)
.Value = .Offset(-1, 0)
.Offset(0, 1) = .Offset(-1, 1)
.Offset(0, 2) = Cells(i, j)
End With
Cells(i, j).ClearContents
Next j
End If
Next i
Application.ScreenUpdating = True
End Sub
3. Нажмите F5 нажмите клавишу, чтобы запустить код, а затем выберите диапазон данных, который вы хотите транспонировать, и вставьте строки в всплывающее диалоговое окно. Смотрите скриншот:
4. Нажмите OK. И выбранный диапазон был преобразован, как показано на скриншоте ниже.
Внимание: перед запуском кода лучше сохранить копию исходных данных.
Наконечник.Если вы хотите быстро преобразовать перекрестную таблицу в таблицу списка или наоборот, попробуйте использовать Kutools for ExcelАвтора Перенести размеры таблицы как показано на следующем снимке экрана. Полная функция без ограничений в 30 дней, пожалуйста, скачайте и получите бесплатную пробную версию сейчас.
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Комментарии (8)
Оценок пока нет. Оцените первым!