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

Вход

Регистрация

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

 

= Мир MS Excel/Перенос ячеек в соседний столбец (выгрузка 1с) - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Перенос ячеек в соседний столбец (выгрузка 1с)
Triip_utd Дата: Вторник, 12.07.2022, 14:29 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Имеется выгрузка из 1с, содержащая разбивку по контрагентам и договорам. Необходимо наименование контрагентов выставить в столбец слева от договора. Руками это делать очень долго, контрагентов достаточно много, есть ли какой-то удобный и быстрый способ это сделать?
К сообщению приложен файл: Sample.xlsx (144.3 Kb)
 
Ответить
СообщениеИмеется выгрузка из 1с, содержащая разбивку по контрагентам и договорам. Необходимо наименование контрагентов выставить в столбец слева от договора. Руками это делать очень долго, контрагентов достаточно много, есть ли какой-то удобный и быстрый способ это сделать?

Автор - Triip_utd
Дата добавления - 12.07.2022 в 14:29
Serge_007 Дата: Вторник, 12.07.2022, 14:40 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Здравствуйте

Вставьте в ячейку А9 эту формулу:
Код
=ЕСЛИ(ЕОШ(ПОИСК("Договор";B9));B9;A8)
и скопируйте её вниз


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеЗдравствуйте

Вставьте в ячейку А9 эту формулу:
Код
=ЕСЛИ(ЕОШ(ПОИСК("Договор";B9));B9;A8)
и скопируйте её вниз

Автор - Serge_007
Дата добавления - 12.07.2022 в 14:40
Triip_utd Дата: Вторник, 12.07.2022, 14:53 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

А если в ячейках просто указан номер договора? Само слово договор не фигурирует
 
Ответить
СообщениеА если в ячейках просто указан номер договора? Само слово договор не фигурирует

Автор - Triip_utd
Дата добавления - 12.07.2022 в 14:53
Serge_007 Дата: Вторник, 12.07.2022, 15:09 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
А если в ячейках просто указан номер договора?
У Вас в файле-примере не так
Правила форума читали? Файл-пример должен максимально соответствовать оригиналу


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
А если в ячейках просто указан номер договора?
У Вас в файле-примере не так
Правила форума читали? Файл-пример должен максимально соответствовать оригиналу

Автор - Serge_007
Дата добавления - 12.07.2022 в 15:09
msi2102 Дата: Вторник, 12.07.2022, 15:23 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 415
Репутация: 129 ±
Замечаний: 0% ±

Excel 2007
Если структура как в примере (см. картинку, обведено красным), то можно макросом
[vba]
Код
Sub Макрос1()
Dim arr As Variant, arr1 As Variant, n As Long, m As Integer
arr1 = Selection.Columns("A:A")
ReDim arr(1 To UBound(arr1), 1 To 1)
Set Dict = CreateObject("System.Collections.ArrayList")
For Each r In Selection.Rows
    n = n + 1
    If Not Dict.contains(r.OutlineLevel) Then
        Dict.Add r.OutlineLevel
        If Dict.Count > 1 Then ReDim Preserve arr(1 To UBound(arr), 1 To UBound(arr, 2) + 1)
    End If
    arr(n, Dict.LastIndexOf(r.OutlineLevel) + 1) = arr1(n, 1)
    If Dict.LastIndexOf(r.OutlineLevel) + 1 > 1 And n > 1 Then
        For m = Dict.LastIndexOf(r.OutlineLevel) To 1 Step -1
            arr(n, m) = arr(n - 1, m)
        Next
    End If
Next
Columns(1).Resize(, Dict.Count).Insert Shift:=xlToRight
Selection(1).Resize(UBound(arr), UBound(arr, 2)).NumberFormat = "@"
Selection(1).Resize(UBound(arr), UBound(arr, 2)) = arr
End Sub
[/vba]

Выделяйте данные, как показано на рисунке и жмите кнопку. Только учтите, что у Вас столбец А практически скрыт, его выделять не надо, только данные (не весь столбец, а только ячейки с данными) в столбце В
К сообщению приложен файл: Sample-1-.xlsm (20.2 Kb) · 7245586.png (18.0 Kb)


Сообщение отредактировал msi2102 - Вторник, 12.07.2022, 15:24
 
Ответить
СообщениеЕсли структура как в примере (см. картинку, обведено красным), то можно макросом
[vba]
Код
Sub Макрос1()
Dim arr As Variant, arr1 As Variant, n As Long, m As Integer
arr1 = Selection.Columns("A:A")
ReDim arr(1 To UBound(arr1), 1 To 1)
Set Dict = CreateObject("System.Collections.ArrayList")
For Each r In Selection.Rows
    n = n + 1
    If Not Dict.contains(r.OutlineLevel) Then
        Dict.Add r.OutlineLevel
        If Dict.Count > 1 Then ReDim Preserve arr(1 To UBound(arr), 1 To UBound(arr, 2) + 1)
    End If
    arr(n, Dict.LastIndexOf(r.OutlineLevel) + 1) = arr1(n, 1)
    If Dict.LastIndexOf(r.OutlineLevel) + 1 > 1 And n > 1 Then
        For m = Dict.LastIndexOf(r.OutlineLevel) To 1 Step -1
            arr(n, m) = arr(n - 1, m)
        Next
    End If
Next
Columns(1).Resize(, Dict.Count).Insert Shift:=xlToRight
Selection(1).Resize(UBound(arr), UBound(arr, 2)).NumberFormat = "@"
Selection(1).Resize(UBound(arr), UBound(arr, 2)) = arr
End Sub
[/vba]

Выделяйте данные, как показано на рисунке и жмите кнопку. Только учтите, что у Вас столбец А практически скрыт, его выделять не надо, только данные (не весь столбец, а только ячейки с данными) в столбце В

Автор - msi2102
Дата добавления - 12.07.2022 в 15:23
  • Страница 1 из 1
  • 1
Поиск:

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