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

Вход

Регистрация

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

 

= Мир MS Excel/Замена формулы на WorksheetFunction - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Замена формулы на WorksheetFunction
Замена формулы на WorksheetFunction
pechkin Дата: Воскресенье, 08.02.2015, 13:09 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 329
Репутация: 49 ±
Замечаний: 0% ±

2003
Здравствуйте! Я уже обращался за помощью с похожей задачей, но, к сожалению, сам справиться не могу...
Есть числа, разделенные "_"(например 13_345 или 124_879) и просто числа для сравнения. Необходимо отделить число до разделителя"_" и сравнить его с заданным. Для решения применил формулу
Код
ЕСЛИ(ЗНАЧЕН(ПСТР(A2;1;ПОИСК("_";A2)-1))=D2;"Правильно";"Не верно")
Подскажите как эту формулу перевести в WorksheetFunction, где ошибка?[vba]
Код
If WorksheetFunction.Value(WorksheetFunction.Mid(Range("A2"), 1, WorksheetFunction.Search("_", Range("A2")))) = Range("D2").Value Then
Range("F2") = "Правильно"
[/vba] Если есть решение проще макросом - еще лучше. Спасибо!
К сообщению приложен файл: 3821355.xls (23.0 Kb)
 
Ответить
СообщениеЗдравствуйте! Я уже обращался за помощью с похожей задачей, но, к сожалению, сам справиться не могу...
Есть числа, разделенные "_"(например 13_345 или 124_879) и просто числа для сравнения. Необходимо отделить число до разделителя"_" и сравнить его с заданным. Для решения применил формулу
Код
ЕСЛИ(ЗНАЧЕН(ПСТР(A2;1;ПОИСК("_";A2)-1))=D2;"Правильно";"Не верно")
Подскажите как эту формулу перевести в WorksheetFunction, где ошибка?[vba]
Код
If WorksheetFunction.Value(WorksheetFunction.Mid(Range("A2"), 1, WorksheetFunction.Search("_", Range("A2")))) = Range("D2").Value Then
Range("F2") = "Правильно"
[/vba] Если есть решение проще макросом - еще лучше. Спасибо!

Автор - pechkin
Дата добавления - 08.02.2015 в 13:09
Manyasha Дата: Воскресенье, 08.02.2015, 13:31 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Например так:
[vba]
Код
If CDbl(Mid(Range("A2"), 1, WorksheetFunction.Search("_", Range("A2"), 1) - 1)) = CDbl(Range("D2").Value) Then
Range("F2") = "Правильно"
End If
[/vba]

Или вот так:
[vba]
Код
arr = Split(Range("A2").Value, "_")
If CDbl(arr(0)) = Range("D2") Then
      Range("F2") =  "Правильно"
End If
[/vba]


ЯД: 410013299366744 WM: R193491431804

Сообщение отредактировал Manyasha - Воскресенье, 08.02.2015, 13:44
 
Ответить
СообщениеНапример так:
[vba]
Код
If CDbl(Mid(Range("A2"), 1, WorksheetFunction.Search("_", Range("A2"), 1) - 1)) = CDbl(Range("D2").Value) Then
Range("F2") = "Правильно"
End If
[/vba]

Или вот так:
[vba]
Код
arr = Split(Range("A2").Value, "_")
If CDbl(arr(0)) = Range("D2") Then
      Range("F2") =  "Правильно"
End If
[/vba]

Автор - Manyasha
Дата добавления - 08.02.2015 в 13:31
Leanna Дата: Воскресенье, 08.02.2015, 13:50 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 189
Репутация: 78 ±
Замечаний: 0% ±

excel 2010
Вот так можно
[vba]
Код
If CStr(Cells(2, "D")) = Split(Cells(2, "A"), "_")(0) Then Cells(2, "E") = "Правильно" Else Cells(2, "E") = ""
[/vba]
К сообщению приложен файл: 5670403.xls (40.0 Kb)


Лучше день потерять, потом за пять минут долететь!
 
Ответить
СообщениеВот так можно
[vba]
Код
If CStr(Cells(2, "D")) = Split(Cells(2, "A"), "_")(0) Then Cells(2, "E") = "Правильно" Else Cells(2, "E") = ""
[/vba]

Автор - Leanna
Дата добавления - 08.02.2015 в 13:50
_Boroda_ Дата: Воскресенье, 08.02.2015, 14:27 | Сообщение № 4
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Перевод именно той конструкции, которую Вы просили
[vba]
Код
If Val(Mid(Range("A2"), 1, WorksheetFunction.Search("_", Range("A2")))) = Range("D2") Then
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеПеревод именно той конструкции, которую Вы просили
[vba]
Код
If Val(Mid(Range("A2"), 1, WorksheetFunction.Search("_", Range("A2")))) = Range("D2") Then
[/vba]

Автор - _Boroda_
Дата добавления - 08.02.2015 в 14:27
pechkin Дата: Воскресенье, 08.02.2015, 17:04 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 329
Репутация: 49 ±
Замечаний: 0% ±

2003
Спасибо Boroda, Leanna, Manyasha, оказавшим помощь! hands
Посмотрите, пожалуйста еще, хотя как бы не в тему, но как бы в продолжение.Как сделать тоже самое ( сравнить числа с разделителем) но на разных листах? Не получается :(
Спасибо!
К сообщению приложен файл: 6806155.xls (42.0 Kb)
 
Ответить
СообщениеСпасибо Boroda, Leanna, Manyasha, оказавшим помощь! hands
Посмотрите, пожалуйста еще, хотя как бы не в тему, но как бы в продолжение.Как сделать тоже самое ( сравнить числа с разделителем) но на разных листах? Не получается :(
Спасибо!

Автор - pechkin
Дата добавления - 08.02.2015 в 17:04
Leanna Дата: Воскресенье, 08.02.2015, 17:12 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 189
Репутация: 78 ±
Замечаний: 0% ±

excel 2010
А зачем цикл в цикле?
[vba]
Код
Sub Макрос22()
  With Sheets("Лист2")
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
     If CStr(.Cells(i, "D")) = Split(Cells(i, "A"), "_")(0) Then Cells(i, "F") = "Правильно" Else Cells(i, "F") = ""
Next
End With
End Sub
[/vba]


Лучше день потерять, потом за пять минут долететь!
 
Ответить
СообщениеА зачем цикл в цикле?
[vba]
Код
Sub Макрос22()
  With Sheets("Лист2")
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
     If CStr(.Cells(i, "D")) = Split(Cells(i, "A"), "_")(0) Then Cells(i, "F") = "Правильно" Else Cells(i, "F") = ""
Next
End With
End Sub
[/vba]

Автор - Leanna
Дата добавления - 08.02.2015 в 17:12
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Замена формулы на WorksheetFunction
  • Страница 1 из 1
  • 1
Поиск:

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