Страницы: 1
RSS
Разделение одной строки на несколько, по определенному условию
 
Добрый день!! Нужна помощь знающих людей.
Есть задача по разделению сгруппированной информации по разным строкам. Собственно, приложил пример для большего понимания.

Заранее благодарю за помощь!
Изменено: Redlinemax - 08.03.2015 18:03:27
 
Формулами такое я бы делать не рискнул, а макросом можно)
 
Собственно, я и перепробовал все возможные формулы, но так результат и не получил...
Увы, в макросах я не силен, поэтому и обратился с знающим людям...

Хотя может все же есть способ провернуть эту операцию формулами. Может кто знающий и откликнется!
 
Добавил второй вариант исходной таблицы, возможно с ней будет легче реализовать данный функционал.
Нужно найти решение для одного из вариантов, не важно какого!
 
В принципе, формулами возможно, но довольно трудоемко. через дополнительный вычисления.
Если таблица большая - файл будет тормозить.

зы. в данный момент мне эта рутина (формулами) малоинтересна
зы.зы. Пост #4 не видел; второй вариант по-проще в решении, может кто и возьмется...

Ответственный ; РТ Отдел и Копирайтинг - это все "заголовки" - других не бывает?
Изменено: Михаил С. - 04.03.2015 10:13:39
 
Сама таблица будет содержать много столбцов, но вся информация в них будет фиксированной для всех работников проекта, следовательно меняется только обязанность. В идеале будет 5 обязанностей. Они все будут фиксированные, для любых проектов:
1. Ответственный
2. РТ Отдел
3. Копирайтинг
4. Коммерция
5. Ведение
 
Простите, а не проще сразу вносить информацию в виде "конечной" таблицы?
 
А чем второй вариант отличается от первого?
 
В первом все в куче - фамилии и "заголовки"; нужно отделять одно от другого.
 
Цитата
МВТ написал: Простите, а не проще сразу вносить информацию в виде "конечной" таблицы?
Конечная таблица будет содержать много дублирующейся информации, так как изменяемые значения в пределах одного проекта только - человек и обязанность, остальные значения будут дублироваться для каждого человека, поэтому этот вариант не подходит.
Цитата
Юрий М написал: А чем второй вариант отличается от первого?
Цитата
Михаил С. написал: В первом все в куче - фамилии и "заголовки"; нужно отделять одно от другого.
Да, Михаил говорит правильно! Второй вариант удобней тем, что названия обязанностей, находятся в фиксированных ячейках заголовка таблицы.
В первом же варианте, в каждом ячейке обязанностей, сначала идет название обязанности, потом люди, и так по кругу.
 
Вот что получилось (по первоначальной таблице)
Скрытый текст
Изменено: Казанский - 03.03.2015 21:42:22
 
Цитата
Казанский написал: Вот что получилось (по первоначальной таблице)     Скрытый текст        
Спасибо! Ваш код справляется поставленной задачей, только есть пару моментов которые хотелось бы усовершенствовать:

1. При нажатии на кнопку, всегда создается новый лист в документе, возможно ли выдавать результат на фиксированной странице в фиксированной таблице??
2. Может ли этот скрипт работать в автономном режиме, т.е. автоматически вносить данные в новую таблицу, без необходимости постоянно нажимать на кнопку запуска скрипта? Я не силен в VBA, так что даже не знаю, можно ли такое реализовать
3. По какому принципу можно добавить новые столбцы в таблицу, чтобы код остался работоспособным
Например сейчас есть такие столбцы:
НазваниеСтартОбязанностиСтатус
Например если надо добавить пару неизменяемых для каждого проекта столбцов:
НазваниеНомерСтартОбязанностиСтатусПрибыльПродолжительность
На какую часть кода эти изменения повлияют??
4.  Исходная таблица сама по себе тоже является генерируемой, и после имени с зяпятов, вставляется пустой символ, получается вот так - ", "
Как можно учесть это в скрипте???
Изменено: Redlinemax - 04.03.2015 12:01:23
 
Redlinemax,  а) не нужно жать кнопку цитирования просто так;
б) не нужно писать предложения через строку;
в) нужно исправить
 
Все возможно.
1. Скрипт может сам определить размер таблицы. Но надо указать, какой столбец надо делить на два - лучше по номеру, но можно и по заголовку.
2.
Цитата
Redlinemax написал: Исходная таблица сама по себе тоже является генерируемой
В каком виде генерируется таблица? Может, лучше считывать данные из файла (избавив Вас от необходимости переносить данные на лист)?
3. Новые данные должны добавляться к таблице или заменять ее, полностью или частично?

В общем, продумайте алгоритм своей работы и уточните постановку задачи.
 
Цитата
Казанский написал: В каком виде генерируется таблица? Может, лучше считывать данные из файла (избавив Вас от необходимости переносить данные на лист)?
По поводу генерации я писал относительно первого варианта исходной таблицы. Немного разобравшись, понял что он не совсем удобен для использования. Поэтому привел таблицу в должный вид, и сделал единый вид исходной таблицы и единый вид требуемой генерируемой таблицы.

Цитата
Казанский написал: 3. Новые данные должны добавляться к таблице или заменять ее, полностью или частично?
Новые данные должны дополнять уже существующую таблицу. Т.е. по мере заполнения исходной таблицы новыми проектами, генерируемая таблица должна автоматически дополняться.

Прикрепил обновленный файл, постарался максимально точно показать что надо сделать и что должно получиться. Буду очень благодарен, если кто-то сможет помочь!
Изменено: Redlinemax - 08.03.2015 22:49:22
 
Очень нужна помощь опытного человека!!
 
Дайте уж человеку отойти от празднования 8 марта :-)
Уверен, что Казанский Вам обязательно поможет, только чуть попозже
Учимся сами и помогаем другим...
 
Вопрос все ещё октуален!
Если ли способ реализовать данный функционал по автоматическому заполнению таблицы в рамках возможностей excel (Формулы и VBA)??
Изменено: Redlinemax - 11.03.2015 09:55:48
 
Я пришел, буду делать :)
 
Спасибо, Казанский! Буду ждать от Вас новостей! :)
 
Пробуйте
 
Казанский, Вы гений!  Работает как часы!!!! Спасибо огромное!

1. Единственно, хотелось бы уточнить - как можно добавить новые колонки с начале и конце таблицы, чтобы не повредить скрипт?? ( столбцы с единственным значением, такие же как например - "Название", "Регион", "Прибыль" ).

2. Возможно ли перенести данный скрипт в другой документ, какие основные моменты необходимо подогнать под новый файл в "bbb" скрипте?
С этим вопросом вроде разобрался! Скрипт нормально мигрировал в новую книгу!
Изменено: Redlinemax - 17.03.2015 07:59:54
 
Оставшийся вопрос всё так же актуален! Есть ли кто из экспертов кто сможет помочь с ним?

В приложение этого сообещения полностью рабочий скрипт первоначально поставленной задачи ( Огромное спасибо Казанскому за реализацию). На данный момент необходимо добавить несколько не динамических ( с единственным значением ) столбцов в начало и конец таблицы, так чтобы код не поехал и так же исправно обрабатывал новые данные.

Пример
Сейчас имеются следующие столбцы:
  1. № Проекта (Единственное значение)
  2. Название (Единственное значение)
  3. Регион (Единственное значение)
  4. Старт (Единственное значение)
  5. Ответственный (Мульти значение через запятую)
  6. РТ Отдел (Мульти значение через запятую)
  7. Копирайтинг (Мульти значение через запятую)
  8. Коммерция (Мульти значение через запятую)
  9. Мониторинг (Мульти значение через запятую)
  10. Прибыль (Единственное значение)
  11. Продолжительность (недель) (Единственное значение)
  12. Статус (Единственное значение)
Необходимо добавить новые столбцы с единственным значениемб выделено зеленым:
  1. № Проекта (Единственное значение)
  2. Название (Единственное значение)
  3. Подгруппа (Единственное значение)
  4. Продукт (Единственное значение)
  5. Регион (Единственное значение)
  6. Старт (Единственное значение)
  7. Ответственный (Мульти значение через запятую)
  8. РТ Отдел (Мульти значение через запятую)
  9. Копирайтинг (Мульти значение через запятую)
  10. Коммерция (Мульти значение через запятую)
  11. Мониторинг (Мульти значение через запятую)
  12. Прибыль (Единственное значение)
  13. Продолжительность (недель) (Единственное значение)
  14. Поставка (Единственное значение)
  15. Склад (Единственное значение)
  16. Статус (Единственное значение)
Изменено: Redlinemax - 24.03.2015 07:10:31
 
Эх, что-то нет добровольцев, кто готов залезть в прикрепленный фаил и пофиксить код. Поэтому тогда хотел попросить, кому не сложно, объяснить логику этого кода!
В данный момент он обрабатывает в общем 12 столбцов: 4 c единичным значением ячейки в начале, 5 мульти заполненных ячеек и 3 c единичным значением ячейки в конце.

Необходимо добавить пару столбцов c единичным значением ячеек в начало и конец таблицы, так что бы код продолжал корректно выполнять поставленную на него задачу!
Код
Option ExplicitSub bbb()
Dim v(), i&, j&, d$(), s$, iw&, m&, k&, fil As Boolean
Dim mode& '0-position, 1-first name, 2-second+ name
v = Range("B4", Cells(Rows.Count, "B").End(xlUp)).Resize(, 12).Value
ReDim w(1 To UBound(v) * 20, 1 To 9)
'iw = 1: i = 1: GoSub Fill1_4_7_9
'w(1, 5) = "Ðàáîòíèê"
For i = 2 To UBound(v)
  fil = False
  For k = 5 To 9
    d = Split(v(i, k), vbLf)
    For j = 0 To UBound(d)
      s = Trim$(Replace(d(j), ",", ""))
      If Len(s) Then
        GoSub Fill1_4_7_9
        w(iw, 5) = s
        w(iw, 6) = v(1, k)
        fil = True
      End If
    Next
  Next
  If Not fil Then GoSub Fill1_4_7_9
NextWith Worksheets(2)
  Range(.Rows(4), .Rows(.Rows.Count)).Clear
  With .Range("B4").Resize(iw, 9)
    .Value = w
    For i = 7 To 12
        With .Borders(i)
          .LineStyle = xlContinuous
          .ColorIndex = 0
          .TintAndShade = 0
          .Weight = xlThin
        End With
    Next
  End With
  .Activate
End With
Exit SubFill1_4_7_9:
  iw = iw + 1
  For m = 1 To 4: w(iw, m) = v(i, m): Next
  For m = 7 To 9: w(iw, m) = v(i, m + 3): Next
ReturnEnd Sub
 
Просто есть некий этикет: раз уж Вам помог Казанский, то уже никто не будет ему "мешать" помогать далее. Да и в чужом коде разбираться та еще задачка.
Учимся сами и помогаем другим...
 
Вопрос решен! Всем спасибо!
Страницы: 1
Наверх