Уважаемые форумчане, очень нужна ваша помощь. Необходимо все слова в третьем столбце D со знаком "-" (минус) разбить в один столбец по одному слову в ячейке. Казалось бы все просто, вот только нужно чтобы, данные из двух первых столбцов A и B автоматически присваивались к соответствующим им изначально, словам со знаком "-" (минус). Я прикрепил файл с примером как это все должно выглядеть. Очень жду ваших ответов. Тут упомянули, что для этого потребуется написать макрос. Кто умеет и разбирается в этом, готов заплатить (называйте сумму) за рабочий макрос, чтобы и в дальнейшем я мог в нужное время пользоваться им для данной задачи.
Уважаемые форумчане, очень нужна ваша помощь. Необходимо все слова в третьем столбце D со знаком "-" (минус) разбить в один столбец по одному слову в ячейке. Казалось бы все просто, вот только нужно чтобы, данные из двух первых столбцов A и B автоматически присваивались к соответствующим им изначально, словам со знаком "-" (минус). Я прикрепил файл с примером как это все должно выглядеть. Очень жду ваших ответов. Тут упомянули, что для этого потребуется написать макрос. Кто умеет и разбирается в этом, готов заплатить (называйте сумму) за рабочий макрос, чтобы и в дальнейшем я мог в нужное время пользоваться им для данной задачи.Rousteek
Сорьки кричать не хотел, просто чтобы чуток выделиться на фоне конкурентов :D [moder]А я вот Вам сейчас, чтобы Вы еще больше выделились, замечание влеплю. Исправляйте свой первый пост.[/moder]
Сорьки кричать не хотел, просто чтобы чуток выделиться на фоне конкурентов :D [moder]А я вот Вам сейчас, чтобы Вы еще больше выделились, замечание влеплю. Исправляйте свой первый пост.[/moder]Rousteek
Pelena, Вижу что сделано как надо но это далеко не весь документ. Вы бы мне объяснили пошагово как это делается, чтобы я мог дальше сам проделывать это. Как с вами можно связаться? (как уже указал в шапке вопроса, в долгу не останусь) [moder]Не надо нарушать п. 5о Правил форума[/moder]
Pelena, Вижу что сделано как надо но это далеко не весь документ. Вы бы мне объяснили пошагово как это делается, чтобы я мог дальше сам проделывать это. Как с вами можно связаться? (как уже указал в шапке вопроса, в долгу не останусь) [moder]Не надо нарушать п. 5о Правил форума[/moder]Rousteek
Сообщение отредактировал Pelena - Пятница, 03.06.2016, 20:05
Пошагово: 1) выделяем столбец D 2) Данные -- Текст по столбцам -- с разделителем -- Пробел. 3) На третьем шаге Мастера текста надо для всех столбцов установить текстовый формат (иначе знаки - будут восприниматься как арифметический знак, что приведёт к ошибкам). Как это сделать быстро, я не знаю. Пришлось визуально найти самую длинную строку, выделить все столбцы (выделить первый, зажать Shift, выделить последний) и установить переключатель Текстовый. Наверное, можно сделать макросом, но у меня не получилось для произвольного числа столбцов. Может, макрописатели помогут 4) нажимаем Alt+F8 выбираем макрос Redesigner -- Выполнить. Макрос взят отсюда , но я добавила пару строк, чтобы позиции, у которых нет ключевых слов, тоже сохранялись, а лишние строки не добавлялись. При работе макроса число строк в шапке 1, а число столбцов слева 3 (по Вашему примеру)
Пошагово: 1) выделяем столбец D 2) Данные -- Текст по столбцам -- с разделителем -- Пробел. 3) На третьем шаге Мастера текста надо для всех столбцов установить текстовый формат (иначе знаки - будут восприниматься как арифметический знак, что приведёт к ошибкам). Как это сделать быстро, я не знаю. Пришлось визуально найти самую длинную строку, выделить все столбцы (выделить первый, зажать Shift, выделить последний) и установить переключатель Текстовый. Наверное, можно сделать макросом, но у меня не получилось для произвольного числа столбцов. Может, макрописатели помогут 4) нажимаем Alt+F8 выбираем макрос Redesigner -- Выполнить. Макрос взят отсюда , но я добавила пару строк, чтобы позиции, у которых нет ключевых слов, тоже сохранялись, а лишние строки не добавлялись. При работе макроса число строк в шапке 1, а число столбцов слева 3 (по Вашему примеру)Pelena
Pelena, Никогда раньше не имел дела с макросами, наконец хоть понял как он вообще запускается Один из макросов более менее работает, но как вы и говорили, он удаляет пустые строки, этот:
[vba]
Код
Sub Redesigner() Dim inpdata As Range, realdata As Range, ns As Worksheet Dim i&, j&, k&, c&, r&, hc&, hr& Dim out(), dataArr, hcArr, hrArr
hr = Val(InputBox("Сколько строк с подписями данных сверху?")) hc = Val(InputBox("Сколько столбцов с подписями данных слева?"))
Set inpdata = Selection If inpdata.Rows.Count <= hr Or inpdata.Columns.Count <= hc Then Exit Sub Set realdata = inpdata.Offset(hr, hc).Resize(inpdata.Rows.Count - hr, inpdata.Columns.Count - hc) dataArr = realdata.Value If hr Then hrArr = inpdata.Offset(0, hc).Resize(hr, inpdata.Columns.Count - hc).Value If hc Then hcArr = inpdata.Offset(hr, 0).Resize(inpdata.Rows.Count - hr, hc).Value
ReDim out(1 To Application.CountA(realdata), 1 To hr + hc + 1) Set ns = Worksheets.Add
For i = 1 To UBound(dataArr, 1) For j = 1 To UBound(dataArr, 2) If Not IsEmpty(dataArr(i, j)) Then k = k + 1 For c = 1 To hc: out(k, c) = hcArr(i, c): Next c For r = 1 To hr: out(k, c + r - 1) = hrArr(r, j): Next r out(k, c + r - 1) = dataArr(i, j) End If Next j, i ns.Cells(2, 1).Resize(UBound(out, 1), UBound(out, 2)) = out End Sub
[/vba]
Скажите пожалуйста, какие пару строк вы изменили, чтобы позиции, у которых нет ключевых слов, тоже сохранялись, а лишние строки не добавлялись? [moder]Оформляйте коды тегами, кнопка #[/moder]
Pelena, Никогда раньше не имел дела с макросами, наконец хоть понял как он вообще запускается Один из макросов более менее работает, но как вы и говорили, он удаляет пустые строки, этот:
[vba]
Код
Sub Redesigner() Dim inpdata As Range, realdata As Range, ns As Worksheet Dim i&, j&, k&, c&, r&, hc&, hr& Dim out(), dataArr, hcArr, hrArr
hr = Val(InputBox("Сколько строк с подписями данных сверху?")) hc = Val(InputBox("Сколько столбцов с подписями данных слева?"))
Set inpdata = Selection If inpdata.Rows.Count <= hr Or inpdata.Columns.Count <= hc Then Exit Sub Set realdata = inpdata.Offset(hr, hc).Resize(inpdata.Rows.Count - hr, inpdata.Columns.Count - hc) dataArr = realdata.Value If hr Then hrArr = inpdata.Offset(0, hc).Resize(hr, inpdata.Columns.Count - hc).Value If hc Then hcArr = inpdata.Offset(hr, 0).Resize(inpdata.Rows.Count - hr, hc).Value
ReDim out(1 To Application.CountA(realdata), 1 To hr + hc + 1) Set ns = Worksheets.Add
For i = 1 To UBound(dataArr, 1) For j = 1 To UBound(dataArr, 2) If Not IsEmpty(dataArr(i, j)) Then k = k + 1 For c = 1 To hc: out(k, c) = hcArr(i, c): Next c For r = 1 To hr: out(k, c + r - 1) = hrArr(r, j): Next r out(k, c + r - 1) = dataArr(i, j) End If Next j, i ns.Cells(2, 1).Resize(UBound(out, 1), UBound(out, 2)) = out End Sub
[/vba]
Скажите пожалуйста, какие пару строк вы изменили, чтобы позиции, у которых нет ключевых слов, тоже сохранялись, а лишние строки не добавлялись? [moder]Оформляйте коды тегами, кнопка #[/moder]Rousteek
Сообщение отредактировал Pelena - Суббота, 04.06.2016, 14:17
jakim, Не совсем это я имел в виду или я сам просто что то не понял в вашем варианте)) Но спасибо за внимание, Pelena уже сделала нужный и рабочий макрос)
jakim, Не совсем это я имел в виду или я сам просто что то не понял в вашем варианте)) Но спасибо за внимание, Pelena уже сделала нужный и рабочий макрос)Rousteek