Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/транспонировать ячеки, соблюдая соответсвие - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
транспонировать ячеки, соблюдая соответсвие
gunna Дата: Воскресенье, 08.03.2015, 19:11 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 68
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Здравствуйте! Умные головы!
Прошу Вашей помощи!
В таблице инфа размещена таким образом, что наименования фирм находятся в объединенных ячейках, а привязанные к ним номера телефонов в столбце в строках, соответствующим объединенным ячейкам, при этом номеров может быть один, 2 , 4 и т.д. Каким образом можно разместить нужные номера телефонов в одной строке с наименованием фирмы.
Все большое спасибо!
К сообщению приложен файл: 6431879.xlsx (15.8 Kb)
 
Ответить
СообщениеЗдравствуйте! Умные головы!
Прошу Вашей помощи!
В таблице инфа размещена таким образом, что наименования фирм находятся в объединенных ячейках, а привязанные к ним номера телефонов в столбце в строках, соответствующим объединенным ячейкам, при этом номеров может быть один, 2 , 4 и т.д. Каким образом можно разместить нужные номера телефонов в одной строке с наименованием фирмы.
Все большое спасибо!

Автор - gunna
Дата добавления - 08.03.2015 в 19:11
МВТ Дата: Воскресенье, 08.03.2015, 19:44 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 476
Репутация: 137 ±
Замечаний: 0% ±

Excel 2007
Вроде, работает, но лучше потестируйте
upd
[vba]
Код
Sub Телефоны()
    Dim L, L1 As Long, S As String
    Application.ScreenUpdating = False
    L = Cells(Rows.Count, 5).End(xlUp).Row
    For I = 2 To L
       If Cells(I, 4).Value <> "" Then
           If L1 <> 0 Then Cells(L1, 6).Value = CStr(S)
           L1 = I
           If Cells(I, 5).Value <> "" Then S = Cells(I, 5).Value
           Else: If Cells(I, 5).Value <> "" Then S = S & ", " & Cells(I, 5).Value
       End If
    Next I
    Application.ScreenUpdating = True
End Sub
[/vba]
К сообщению приложен файл: 6431879-1-.xlsm (22.5 Kb)


Сообщение отредактировал МВТ - Воскресенье, 08.03.2015, 20:11
 
Ответить
СообщениеВроде, работает, но лучше потестируйте
upd
[vba]
Код
Sub Телефоны()
    Dim L, L1 As Long, S As String
    Application.ScreenUpdating = False
    L = Cells(Rows.Count, 5).End(xlUp).Row
    For I = 2 To L
       If Cells(I, 4).Value <> "" Then
           If L1 <> 0 Then Cells(L1, 6).Value = CStr(S)
           L1 = I
           If Cells(I, 5).Value <> "" Then S = Cells(I, 5).Value
           Else: If Cells(I, 5).Value <> "" Then S = S & ", " & Cells(I, 5).Value
       End If
    Next I
    Application.ScreenUpdating = True
End Sub
[/vba]

Автор - МВТ
Дата добавления - 08.03.2015 в 19:44
gunna Дата: Воскресенье, 08.03.2015, 20:16 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 68
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
hands
отлично! все сработало! Я очень признательна Вам! Если еще один нюанс при транспонировании учесть, чтобы эти самые номера попадали в строку, но в разные ячейки. Возможен ли такой вариант?[offtop] victory victory victory
 
Ответить
Сообщениеhands
отлично! все сработало! Я очень признательна Вам! Если еще один нюанс при транспонировании учесть, чтобы эти самые номера попадали в строку, но в разные ячейки. Возможен ли такой вариант?[offtop] victory victory victory

Автор - gunna
Дата добавления - 08.03.2015 в 20:16
МВТ Дата: Воскресенье, 08.03.2015, 21:34 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 476
Репутация: 137 ±
Замечаний: 0% ±

Excel 2007
Попробуйте так:
[vba]
Код
Sub Телефоны2()
  Dim L, L1, C1 As Long, S As String
  Application.ScreenUpdating = False
  L = Cells(Rows.Count, 5).End(xlUp).Row
  For I = 2 To L
     If Cells(I, 4).Value <> "" Then
         L1 = I
         C1 = 0
     End If
     If Cells(I, 5).Value <> "" Then
      Cells(L1, 6 + C1).Value = CStr(Cells(I, 5).Value)
      C1 = C1 + 1
     End If
  Next I
  Application.ScreenUpdating = True
End Sub
[/vba]
К сообщению приложен файл: 9913389.xlsm (22.8 Kb)
 
Ответить
СообщениеПопробуйте так:
[vba]
Код
Sub Телефоны2()
  Dim L, L1, C1 As Long, S As String
  Application.ScreenUpdating = False
  L = Cells(Rows.Count, 5).End(xlUp).Row
  For I = 2 To L
     If Cells(I, 4).Value <> "" Then
         L1 = I
         C1 = 0
     End If
     If Cells(I, 5).Value <> "" Then
      Cells(L1, 6 + C1).Value = CStr(Cells(I, 5).Value)
      C1 = C1 + 1
     End If
  Next I
  Application.ScreenUpdating = True
End Sub
[/vba]

Автор - МВТ
Дата добавления - 08.03.2015 в 21:34
krosav4ig Дата: Понедельник, 09.03.2015, 04:35 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
еще вариант, разъединил объединенные ячейки и заполнил пустые, добавил доп.столбец и сводную
как заполнить пустые ячейки можно посмотреть тут
К сообщению приложен файл: 1918062.xlsx (30.1 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениееще вариант, разъединил объединенные ячейки и заполнил пустые, добавил доп.столбец и сводную
как заполнить пустые ячейки можно посмотреть тут

Автор - krosav4ig
Дата добавления - 09.03.2015 в 04:35
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!