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

Вход

Регистрация

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

 

= Мир MS Excel/ИНДЕКС и ПОИСКПОЗ в макросе - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » ИНДЕКС и ПОИСКПОЗ в макросе (Макросы/Sub)
ИНДЕКС и ПОИСКПОЗ в макросе
drugojandrew Дата: Пятница, 10.04.2020, 11:52 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Добрый день!
Можно ли прописать эту формулу:
[vba]
Код
Sub Teast()
Range("B1:B21").FormulaR1C1 = _
"=IFERROR(INDEX(Data!R1C2:R30C2,MATCH(TRIM(RC1),Data!R1C1:R30C1,0),1),0)"
End Sub
[/vba]
не как формулу, а чтобы все вычисления производились в макросе, а на листе вставлялись только значения?
Пример приложен.
К сообщению приложен файл: Primer2.xls (34.5 Kb)
 
Ответить
СообщениеДобрый день!
Можно ли прописать эту формулу:
[vba]
Код
Sub Teast()
Range("B1:B21").FormulaR1C1 = _
"=IFERROR(INDEX(Data!R1C2:R30C2,MATCH(TRIM(RC1),Data!R1C1:R30C1,0),1),0)"
End Sub
[/vba]
не как формулу, а чтобы все вычисления производились в макросе, а на листе вставлялись только значения?
Пример приложен.

Автор - drugojandrew
Дата добавления - 10.04.2020 в 11:52
китин Дата: Пятница, 10.04.2020, 11:59 | Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 7014
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
а на листе вставлялись только значения?

[vba]
Код
Sub Teast()
Range("B1:B21").FormulaR1C1 = _
"=IFERROR(INDEX(Data!R1C2:R30C2,MATCH(TRIM(RC1),Data!R1C1:R30C1,0),1),0)"
Range("B1:B21").Copy
Range("B1:B21").PasteSpecial Paste:=xlPasteValues
End Sub
[/vba]


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщение
а на листе вставлялись только значения?

[vba]
Код
Sub Teast()
Range("B1:B21").FormulaR1C1 = _
"=IFERROR(INDEX(Data!R1C2:R30C2,MATCH(TRIM(RC1),Data!R1C1:R30C1,0),1),0)"
Range("B1:B21").Copy
Range("B1:B21").PasteSpecial Paste:=xlPasteValues
End Sub
[/vba]

Автор - китин
Дата добавления - 10.04.2020 в 11:59
drugojandrew Дата: Пятница, 10.04.2020, 12:02 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
китин, спасибо, у меня сейчас как раз так. Но я хочу совсем избавится от вычислений на листе, т.е. совсем не вставлять формулу, и сделать так, чтобы все вычисления производились внутри макроса. Возможно ли такое?
 
Ответить
Сообщениекитин, спасибо, у меня сейчас как раз так. Но я хочу совсем избавится от вычислений на листе, т.е. совсем не вставлять формулу, и сделать так, чтобы все вычисления производились внутри макроса. Возможно ли такое?

Автор - drugojandrew
Дата добавления - 10.04.2020 в 12:02
nilem Дата: Пятница, 10.04.2020, 13:13 | Сообщение № 4
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
вариант без формул:

... и немножко с формулами )


Яндекс.Деньги 4100159601573

Сообщение отредактировал nilem - Пятница, 10.04.2020, 13:22
 
Ответить
Сообщениевариант без формул:

... и немножко с формулами )

Автор - nilem
Дата добавления - 10.04.2020 в 13:13
drugojandrew Дата: Пятница, 10.04.2020, 13:27 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
nilem, спасибо!
Буду разбираться.
 
Ответить
Сообщениеnilem, спасибо!
Буду разбираться.

Автор - drugojandrew
Дата добавления - 10.04.2020 в 13:27
Gustav Дата: Воскресенье, 12.04.2020, 18:32 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2733
Репутация: 1136 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
хочу совсем избавится от вычислений на листе, т.е. совсем не вставлять формулу, и сделать так, чтобы все вычисления производились внутри макроса

Можно еще вот так, с использованием формулы в почти привычном виде (т.е. без перехода к аналогичным методам VBA), но БЕЗ помещения формулы в ячейки листа:
[vba]
Код
Sub Test3()
    Dim arr(1 To 21, 1 To 1), i
    For i = 1 To 21
        arr(i, 1) = Application.Evaluate("=IFERROR(INDEX(Data!$B$1:$B$30,MATCH(TRIM($A" & i & "),Data!$A$1:$A$30,0),1),0)")
    Next i
    Range("B1:B21") = arr
End Sub
[/vba]


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
хочу совсем избавится от вычислений на листе, т.е. совсем не вставлять формулу, и сделать так, чтобы все вычисления производились внутри макроса

Можно еще вот так, с использованием формулы в почти привычном виде (т.е. без перехода к аналогичным методам VBA), но БЕЗ помещения формулы в ячейки листа:
[vba]
Код
Sub Test3()
    Dim arr(1 To 21, 1 To 1), i
    For i = 1 To 21
        arr(i, 1) = Application.Evaluate("=IFERROR(INDEX(Data!$B$1:$B$30,MATCH(TRIM($A" & i & "),Data!$A$1:$A$30,0),1),0)")
    Next i
    Range("B1:B21") = arr
End Sub
[/vba]

Автор - Gustav
Дата добавления - 12.04.2020 в 18:32
Dmitriy_37 Дата: Воскресенье, 12.04.2020, 20:06 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 26
Репутация: 4 ±
Замечаний: 0% ±

Excel 2010
Добрый день!

И еще вариант
[vba]
Код
Sub Teast()
Dim rCell As Range, rCel As Range
For Each rCell In ThisWorkbook.Worksheets("W").Range("A1:A21")
    For Each rCel In ThisWorkbook.Worksheets("Data").Range("A1:A21")
        If rCell = rCel Then
            rCell.Offset(, 1) = rCel.Offset(, 1)
            Exit For
        End If
    Next rCel
Next rCell
End Sub
[/vba]
 
Ответить
СообщениеДобрый день!

И еще вариант
[vba]
Код
Sub Teast()
Dim rCell As Range, rCel As Range
For Each rCell In ThisWorkbook.Worksheets("W").Range("A1:A21")
    For Each rCel In ThisWorkbook.Worksheets("Data").Range("A1:A21")
        If rCell = rCel Then
            rCell.Offset(, 1) = rCel.Offset(, 1)
            Exit For
        End If
    Next rCel
Next rCell
End Sub
[/vba]

Автор - Dmitriy_37
Дата добавления - 12.04.2020 в 20:06
Мир MS Excel » Вопросы и решения » Вопросы по VBA » ИНДЕКС и ПОИСКПОЗ в макросе (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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