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

Вход

Регистрация

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

 

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

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

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


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

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

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

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


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
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
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 160
Репутация: 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
Группа: Модераторы
Ранг: Местный житель
Сообщений: 11493
Репутация: 2557 ±
Замечаний: 0% ±

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

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


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

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

Автор - Pelena
Дата добавления - 18.07.2016 в 07:45
Karataev Дата: Понедельник, 18.07.2016, 12:30 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 887
Репутация: 334 ±
Замечаний: 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
Группа: Модераторы
Ранг: Местный житель
Сообщений: 11337
Репутация: 4677 ±
Замечаний: 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 из 11
Поиск:

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