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

Вход

Регистрация

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

 

= Мир MS Excel/После ячейки с определенным именем, вставление столбца - Мир MS Excel

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

Excel 2010
Подскажите, пожалуйста, как сделать так, чтобы если находится определенный текст (например имя) то после столбца. в котором ячейка "имя" вставялся столбец и в ячеку (в приемер b6) вставлялась формула и растягивалась вниз допустим на 200 значения , и чтобы дальше так делалось для определнных ячеек (отчество и т. д .) А если не находил определнную ячеку ; например не нашел ячеку паспорт-> ищи следующую
Таблица как есть - листй, как должно быть лист2.
Спасибо!
К сообщению приложен файл: 2434321.xlsx (7.9 Kb)
 
Ответить
СообщениеПодскажите, пожалуйста, как сделать так, чтобы если находится определенный текст (например имя) то после столбца. в котором ячейка "имя" вставялся столбец и в ячеку (в приемер b6) вставлялась формула и растягивалась вниз допустим на 200 значения , и чтобы дальше так делалось для определнных ячеек (отчество и т. д .) А если не находил определнную ячеку ; например не нашел ячеку паспорт-> ищи следующую
Таблица как есть - листй, как должно быть лист2.
Спасибо!

Автор - letasm
Дата добавления - 04.06.2016 в 18:54
МВТ Дата: Суббота, 04.06.2016, 20:06 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 476
Репутация: 137 ±
Замечаний: 0% ±

Excel 2007
Как-то так
[vba]
Код
Sub tt()
    Dim n, rng As Range, i As Long, j As Long
    n = Split("имя фамилия отчество адрес телефон")
    Set rng = Range(Cells(5, 1), Cells(Cells(5, Columns.Count).End(xlToLeft).Column))
    Application.ScreenUpdating = False
    With rng
        For i = .Columns.Count To 1 Step -1
            For j = 0 To UBound(n)
                If Cells(5, i) = n(j) Then
                    Cells(5, i).Offset(, 1).EntireColumn.Insert
                    Cells(5, i + 1) = n(j) & "2"
                    Cells(6, i + 1).Resize(200, 1).FormulaR1C1 = "formula"
                    Exit For
                End If
            Next
        Next
    End With
End Sub
[/vba]


Сообщение отредактировал МВТ - Суббота, 04.06.2016, 20:07
 
Ответить
СообщениеКак-то так
[vba]
Код
Sub tt()
    Dim n, rng As Range, i As Long, j As Long
    n = Split("имя фамилия отчество адрес телефон")
    Set rng = Range(Cells(5, 1), Cells(Cells(5, Columns.Count).End(xlToLeft).Column))
    Application.ScreenUpdating = False
    With rng
        For i = .Columns.Count To 1 Step -1
            For j = 0 To UBound(n)
                If Cells(5, i) = n(j) Then
                    Cells(5, i).Offset(, 1).EntireColumn.Insert
                    Cells(5, i + 1) = n(j) & "2"
                    Cells(6, i + 1).Resize(200, 1).FormulaR1C1 = "formula"
                    Exit For
                End If
            Next
        Next
    End With
End Sub
[/vba]

Автор - МВТ
Дата добавления - 04.06.2016 в 20:06
letasm Дата: Среда, 15.06.2016, 17:37 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 37
Репутация: 0 ±
Замечаний: 40% ±

Excel 2010
МВТ, Спасибо огромнейшее!
Но дело в том, что формула будет впр
И она будет браться из другой таблице (всегда одни и те же ячейки, порядок столбцов неизменный)
И вот если писать формулу макросом, он предстает в виде
Код
=IF(RC[-1]=VLOOKUP(RC[-9],рабтаб!C[-9]:C[8],18,0),""ок"",VLOOKUP(RC[-9],рабтаб!C[-9]:C[8],18,0))

Соответственно при другом положении столбца в первой таблице, формула будет неверной.
Можно как-то формулу записать в другом виде в формате А1?
Спасибо!
[moder]Формулы нужно оформлять тегами![/moder]


Сообщение отредактировал Manyasha - Среда, 15.06.2016, 17:55
 
Ответить
СообщениеМВТ, Спасибо огромнейшее!
Но дело в том, что формула будет впр
И она будет браться из другой таблице (всегда одни и те же ячейки, порядок столбцов неизменный)
И вот если писать формулу макросом, он предстает в виде
Код
=IF(RC[-1]=VLOOKUP(RC[-9],рабтаб!C[-9]:C[8],18,0),""ок"",VLOOKUP(RC[-9],рабтаб!C[-9]:C[8],18,0))

Соответственно при другом положении столбца в первой таблице, формула будет неверной.
Можно как-то формулу записать в другом виде в формате А1?
Спасибо!
[moder]Формулы нужно оформлять тегами![/moder]

Автор - letasm
Дата добавления - 15.06.2016 в 17:37
_Boroda_ Дата: Среда, 15.06.2016, 17:57 | Сообщение № 4
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Вместо FormulaR1C1 пишите FormulaLocal
Типа вот так
[vba]
Код
Range("A1").FormulaLocal = "=СУММ(D2:D4)"
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВместо FormulaR1C1 пишите FormulaLocal
Типа вот так
[vba]
Код
Range("A1").FormulaLocal = "=СУММ(D2:D4)"
[/vba]

Автор - _Boroda_
Дата добавления - 15.06.2016 в 17:57
letasm Дата: Среда, 15.06.2016, 20:19 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 37
Репутация: 0 ±
Замечаний: 40% ±

Excel 2010
_Boroda_, но в формуле должна присутствовать всегда левая от нового столбца ячейка, чтобы с ней сравнивать..
 
Ответить
Сообщение_Boroda_, но в формуле должна присутствовать всегда левая от нового столбца ячейка, чтобы с ней сравнивать..

Автор - letasm
Дата добавления - 15.06.2016 в 20:19
_Boroda_ Дата: Среда, 15.06.2016, 20:55 | Сообщение № 6
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Вы бы написали свою формулу в нормальном виде.
А если в общем, то введите на листе формулу в стиле А1, поставьте доллары там, где нужно, потом переведите ее в стиль RC
Например, формула в стиле А1 такая
Код
=ЕСЛИ(L13=ВПР($D$13;рабтаб!$D:$U;18;0);"ок";ВПР($D$13;рабтаб!$D:$U;18;0))

В стиле RC будет выглядеть так
Код
=ЕСЛИ(RC[-1]=ВПР(R13C4;рабтаб!C4:C21;18;0);"ок";ВПР(R13C4;рабтаб!C4:C21;18;0))

Ссылки $D$13 и рабтаб!$D:$U неизменны (они без квадратных скобок в стиле RC - R13C4 и рабтаб!C4:C21)

И еще - очень не советую писать ВПР на целиковые столбцы. Напишите на 999 строк (ну или на 9999, или сколько там у Вас), но только без фанатизма - ВПР довольно-таки тормознутая функция.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВы бы написали свою формулу в нормальном виде.
А если в общем, то введите на листе формулу в стиле А1, поставьте доллары там, где нужно, потом переведите ее в стиль RC
Например, формула в стиле А1 такая
Код
=ЕСЛИ(L13=ВПР($D$13;рабтаб!$D:$U;18;0);"ок";ВПР($D$13;рабтаб!$D:$U;18;0))

В стиле RC будет выглядеть так
Код
=ЕСЛИ(RC[-1]=ВПР(R13C4;рабтаб!C4:C21;18;0);"ок";ВПР(R13C4;рабтаб!C4:C21;18;0))

Ссылки $D$13 и рабтаб!$D:$U неизменны (они без квадратных скобок в стиле RC - R13C4 и рабтаб!C4:C21)

И еще - очень не советую писать ВПР на целиковые столбцы. Напишите на 999 строк (ну или на 9999, или сколько там у Вас), но только без фанатизма - ВПР довольно-таки тормознутая функция.

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

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