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

Вход

Регистрация

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

 

= Мир MS Excel/Сравнение символов после ":" из разных ячеек - Мир MS Excel

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

Excel 2010
Всем доброго времени суток!

В Excel'е есть такая формула:
Код
=ПСТР(A1;НАЙТИ(":";A1)+1;32000)


Она выведет все значения из ячейки, которые стоят после двоеточия.

Вопрос в следующем: я хочу написать код макроса, который будет сравнивать значения после двоеточия в двух разных ячейках, и делать неважно что, если значения совпадают.
Мой примитивный тестовый код выглядит вот так:
[vba]
Код

    If Mid(Cells(2, 1), Find(""":""", Cells(2, 1)) + 1, 32000) = Mid(Cells(1, 1), Find(""":""", Cells(1, 1)) + 1, 32000) Then
      Cells(2, 2) = 1
    End If
[/vba]

vba ругается на "Find".
Подскажите пожалуйста, как можно переделать корректно данный кусок кода? Была мысль сделать две переменные в которые записывать результат формулы, а затем сравнивать эти переменные, но кажется, это не очень кошерно будет.

Заранее спасибо!
 
Ответить
СообщениеВсем доброго времени суток!

В Excel'е есть такая формула:
Код
=ПСТР(A1;НАЙТИ(":";A1)+1;32000)


Она выведет все значения из ячейки, которые стоят после двоеточия.

Вопрос в следующем: я хочу написать код макроса, который будет сравнивать значения после двоеточия в двух разных ячейках, и делать неважно что, если значения совпадают.
Мой примитивный тестовый код выглядит вот так:
[vba]
Код

    If Mid(Cells(2, 1), Find(""":""", Cells(2, 1)) + 1, 32000) = Mid(Cells(1, 1), Find(""":""", Cells(1, 1)) + 1, 32000) Then
      Cells(2, 2) = 1
    End If
[/vba]

vba ругается на "Find".
Подскажите пожалуйста, как можно переделать корректно данный кусок кода? Была мысль сделать две переменные в которые записывать результат формулы, а затем сравнивать эти переменные, но кажется, это не очень кошерно будет.

Заранее спасибо!

Автор - Red_Sloth
Дата добавления - 21.11.2016 в 13:34
_Boroda_ Дата: Понедельник, 21.11.2016, 13:41 | Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 9371
Репутация: 3947 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Если Ваш код поправить, то так
[vba]
Код
If Mid(Cells(2, 1), WorksheetFunction.Find(":", Cells(2, 1)), 32000) = Mid(Cells(1, 1), WorksheetFunction.Find(":", Cells(1, 1)), 32000) Then
    Cells(2, 2) = 1
End If
[/vba]
А можно вот так написать
[vba]
Код
If Mid(Cells(2, 1), InStr(Cells(2, 1), ":"), 32000) = Mid(Cells(1, 1), InStr(Cells(1, 1), ":"), 32000) Then
    Cells(2, 2) = 1
End If
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЕсли Ваш код поправить, то так
[vba]
Код
If Mid(Cells(2, 1), WorksheetFunction.Find(":", Cells(2, 1)), 32000) = Mid(Cells(1, 1), WorksheetFunction.Find(":", Cells(1, 1)), 32000) Then
    Cells(2, 2) = 1
End If
[/vba]
А можно вот так написать
[vba]
Код
If Mid(Cells(2, 1), InStr(Cells(2, 1), ":"), 32000) = Mid(Cells(1, 1), InStr(Cells(1, 1), ":"), 32000) Then
    Cells(2, 2) = 1
End If
[/vba]

Автор - _Boroda_
Дата добавления - 21.11.2016 в 13:41
Karataev Дата: Понедельник, 21.11.2016, 13:46 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 642
Репутация: 226 ±
Замечаний: 0% ±

Excel
Есть два варианта что использовать для поиска:
1) функции VBA: InStr или InStrRev
2) функции Excel'я: WorksheetFunction.Find
В самом VBA нет функции "Find", поэтому ругается.

Можно вообще не искать, а использовать такой код:
[vba]
Код
Split("text", ":", 2)(1)
[/vba]
"2" означает, что нужно разбить только на две части.
"(1)" означает, что нужно посмотреть второй элемент (в данном случае нумерация начинается с нуля).




Сообщение отредактировал Karataev - Понедельник, 21.11.2016, 13:53
 
Ответить
СообщениеЕсть два варианта что использовать для поиска:
1) функции VBA: InStr или InStrRev
2) функции Excel'я: WorksheetFunction.Find
В самом VBA нет функции "Find", поэтому ругается.

Можно вообще не искать, а использовать такой код:
[vba]
Код
Split("text", ":", 2)(1)
[/vba]
"2" означает, что нужно разбить только на две части.
"(1)" означает, что нужно посмотреть второй элемент (в данном случае нумерация начинается с нуля).

Автор - Karataev
Дата добавления - 21.11.2016 в 13:46
Red_Sloth Дата: Понедельник, 21.11.2016, 14:25 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Karataev, _Boroda_,

Спасибо большое!
 
Ответить
СообщениеKarataev, _Boroda_,

Спасибо большое!

Автор - Red_Sloth
Дата добавления - 21.11.2016 в 14:25
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сравнение символов после ":" из разных ячеек (Макросы/Sub)
Страница 1 из 11
Поиск:

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