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

Вход

Регистрация

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

 

= Мир MS Excel/Добавление колонки с названием категории, как? - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Добавление колонки с названием категории, как? (Макросы/Sub)
Добавление колонки с названием категории, как?
wwizard Дата: Понедельник, 18.07.2016, 00:13 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 176
Репутация: 0 ±
Замечаний: 40% ±

Добрый день уважаемые форумчане. В очередной раз прошу помощи.
Есть прайс лист, где название категории указано над всей категорией, для сортировки очень неудобно.
Использую для сортировки, я столбец под номером 10
Следовательно мне нужно чтобы в него скопировалось, название раздела с поля над ним. И так для всех позиций в прайсе. Из примера будет понятно, что именно неудобно.
К сообщению приложен файл: PROBA34.xls (41.5 Kb)


Сообщение отредактировал wwizard - Понедельник, 18.07.2016, 00:14
 
Ответить
СообщениеДобрый день уважаемые форумчане. В очередной раз прошу помощи.
Есть прайс лист, где название категории указано над всей категорией, для сортировки очень неудобно.
Использую для сортировки, я столбец под номером 10
Следовательно мне нужно чтобы в него скопировалось, название раздела с поля над ним. И так для всех позиций в прайсе. Из примера будет понятно, что именно неудобно.

Автор - wwizard
Дата добавления - 18.07.2016 в 00:13
_Boroda_ Дата: Понедельник, 18.07.2016, 00:39 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
А Вам обязательно макросом?
Формулой не пойдет?
Код
=ЕСЛИ(B2="";A2;I1)

Или вот так
Код
=ЕСЛИ(B2="";"";ЕСЛИ(B1="";A1;I1))
К сообщению приложен файл: PROBA34_1.xls (45.0 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА Вам обязательно макросом?
Формулой не пойдет?
Код
=ЕСЛИ(B2="";A2;I1)

Или вот так
Код
=ЕСЛИ(B2="";"";ЕСЛИ(B1="";A1;I1))

Автор - _Boroda_
Дата добавления - 18.07.2016 в 00:39
wwizard Дата: Понедельник, 18.07.2016, 01:22 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 176
Репутация: 0 ±
Замечаний: 40% ±

=ЕСЛИ(B2="";"";ЕСЛИ(B1="";A1;I1))


Это подойдет, но макрос все равно удобнее, его не нужно растягивать вниз, на 50000 строк :(
 
Ответить
Сообщение
=ЕСЛИ(B2="";"";ЕСЛИ(B1="";A1;I1))


Это подойдет, но макрос все равно удобнее, его не нужно растягивать вниз, на 50000 строк :(

Автор - wwizard
Дата добавления - 18.07.2016 в 01:22
Pelena Дата: Понедельник, 18.07.2016, 07:45 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 19161
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
его не нужно растягивать вниз, на 50000 строк

Быстрое заполнение диапазона формулами


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
его не нужно растягивать вниз, на 50000 строк

Быстрое заполнение диапазона формулами

Автор - Pelena
Дата добавления - 18.07.2016 в 07:45
Karataev Дата: Понедельник, 18.07.2016, 12:30 | Сообщение № 5
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация: 533 ±
Замечаний: 0% ±

Excel
[vba]
Код
Sub Макрос()

    Dim rng As Range, ar As Range, lr As Long
    
    Application.ScreenUpdating = False
    
    lr = Columns("B").Find(What:="*", LookIn:=xlFormulas, LookAt:= _
        xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _
        , SearchFormat:=False).Row
    Set rng = Range("B2:B" & lr).SpecialCells(xlCellTypeConstants).EntireRow
    
    For Each ar In rng.Areas
        ar.Columns(10).Value = ar.Range("A1").Offset(-1).Value
    Next
    
    Application.ScreenUpdating = True
    
End Sub
[/vba]
 
Ответить
Сообщение[vba]
Код
Sub Макрос()

    Dim rng As Range, ar As Range, lr As Long
    
    Application.ScreenUpdating = False
    
    lr = Columns("B").Find(What:="*", LookIn:=xlFormulas, LookAt:= _
        xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _
        , SearchFormat:=False).Row
    Set rng = Range("B2:B" & lr).SpecialCells(xlCellTypeConstants).EntireRow
    
    For Each ar In rng.Areas
        ar.Columns(10).Value = ar.Range("A1").Offset(-1).Value
    Next
    
    Application.ScreenUpdating = True
    
End Sub
[/vba]

Автор - Karataev
Дата добавления - 18.07.2016 в 12:30
_Boroda_ Дата: Понедельник, 18.07.2016, 15:08 | Сообщение № 6
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Еще 3 варианта макроса. на 500000 последний самый быстрый
[vba]
Код
Sub tt()
    Application.ScreenUpdating = 0
    r1_ = Range("A" & Rows.Count).End(xlUp).Row
    For i = 2 To r1_
        If Range("B" & i) = "" Then
            n_ = Range("A" & i)
        Else
            Range("G" & i) = n_
        End If
    Next i
End Sub

Sub ttt()
    Application.ScreenUpdating = 0
    r1_ = Range("A" & Rows.Count).End(xlUp).Row
    Range("G3:G" & r1_).FormulaR1C1 = _
        "=IF(RC[-5]="""","""",IF(R[-1]C[-5]="""",R[-1]C[-6],R[-1]C))"
        Range("G3:G" & r1_).Copy
        Range("G3:G" & r1_).PasteSpecial (xlPasteValues)
        Application.CutCopyMode = 0
End Sub

Sub tttt()
    Dim ar1, ar0
    Application.ScreenUpdating = 0
    r1_ = Range("A" & Rows.Count).End(xlUp).Row - 1
    ar0 = Range("A2:B" & r1_ + 1)
    ReDim ar1(1 To r1_, 0 To 0)
    For i = 1 To r1_
'        Debug.Print i
        If ar0(i, 2) = "" Then
            ar1(i, 0) = ""
            n_ = ar0(i, 1)
        Else
            ar1(i, 0) = n_
        End If
    Next i
    Range("G2:G" & r1_ + 1) = ar1
End Sub
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЕще 3 варианта макроса. на 500000 последний самый быстрый
[vba]
Код
Sub tt()
    Application.ScreenUpdating = 0
    r1_ = Range("A" & Rows.Count).End(xlUp).Row
    For i = 2 To r1_
        If Range("B" & i) = "" Then
            n_ = Range("A" & i)
        Else
            Range("G" & i) = n_
        End If
    Next i
End Sub

Sub ttt()
    Application.ScreenUpdating = 0
    r1_ = Range("A" & Rows.Count).End(xlUp).Row
    Range("G3:G" & r1_).FormulaR1C1 = _
        "=IF(RC[-5]="""","""",IF(R[-1]C[-5]="""",R[-1]C[-6],R[-1]C))"
        Range("G3:G" & r1_).Copy
        Range("G3:G" & r1_).PasteSpecial (xlPasteValues)
        Application.CutCopyMode = 0
End Sub

Sub tttt()
    Dim ar1, ar0
    Application.ScreenUpdating = 0
    r1_ = Range("A" & Rows.Count).End(xlUp).Row - 1
    ar0 = Range("A2:B" & r1_ + 1)
    ReDim ar1(1 To r1_, 0 To 0)
    For i = 1 To r1_
'        Debug.Print i
        If ar0(i, 2) = "" Then
            ar1(i, 0) = ""
            n_ = ar0(i, 1)
        Else
            ar1(i, 0) = n_
        End If
    Next i
    Range("G2:G" & r1_ + 1) = ar1
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 18.07.2016 в 15:08
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Добавление колонки с названием категории, как? (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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