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

Вход

Регистрация

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

 

= Мир MS Excel/Сравнение значения ячеек с массивом строк - Мир MS Excel

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

Excel 2007
Здравствуйте!

Есть выбранная область. Во втором столбце этой области записано Название Детали с Категорией, формата "НазваниеДеталиКатегория4".
Нужно найти Категорию в названии и записать ее в последний столбец выбранной области.

Я решил использовать массив строк, сравнивать все ячейки во втором столбце со всеми значениями массива и записывать подходящий в посл. столбец.

Код:
[vba]
Код

Dim rngArea As Range

Dim ChangeTo, Temp As String
Dim numOfLetters As Integer

Set rng = Application.Selection

Dim Cat(1 To 14) As String

Cat(1) = "категория1"
Cat(2) = "категория2"
...
Cat(14) = "категория14"

For i = 1 To rng.Rows.Count
     For s = 1 To 14
         If (InStr(1, rng.Cells(i, 2).value, Cat(s))) Then
             rng.Cells(i, rng.Columns.Count).value = Cat(s)
         End If
     Next s
Next i
[/vba]

Код работает на некоторые категории, не выводя определенные. Например, не записывает категория3, категория7 и т.д.

Кто-нибудь может пролить свет на такие вещи?) Спасибо!
 
Ответить
СообщениеЗдравствуйте!

Есть выбранная область. Во втором столбце этой области записано Название Детали с Категорией, формата "НазваниеДеталиКатегория4".
Нужно найти Категорию в названии и записать ее в последний столбец выбранной области.

Я решил использовать массив строк, сравнивать все ячейки во втором столбце со всеми значениями массива и записывать подходящий в посл. столбец.

Код:
[vba]
Код

Dim rngArea As Range

Dim ChangeTo, Temp As String
Dim numOfLetters As Integer

Set rng = Application.Selection

Dim Cat(1 To 14) As String

Cat(1) = "категория1"
Cat(2) = "категория2"
...
Cat(14) = "категория14"

For i = 1 To rng.Rows.Count
     For s = 1 To 14
         If (InStr(1, rng.Cells(i, 2).value, Cat(s))) Then
             rng.Cells(i, rng.Columns.Count).value = Cat(s)
         End If
     Next s
Next i
[/vba]

Код работает на некоторые категории, не выводя определенные. Например, не записывает категория3, категория7 и т.д.

Кто-нибудь может пролить свет на такие вещи?) Спасибо!

Автор - ill
Дата добавления - 23.01.2015 в 18:04
Hugo Дата: Пятница, 23.01.2015, 18:22 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3255
Репутация: 707 ±
Замечаний: 0% ±

2019
Да ктож его знает... Может быть куча причин. Но конечно скорее всего там нет таких значений. А может быть одно затирает другое...


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеДа ктож его знает... Может быть куча причин. Но конечно скорее всего там нет таких значений. А может быть одно затирает другое...

Автор - Hugo
Дата добавления - 23.01.2015 в 18:22
SkyPro Дата: Пятница, 23.01.2015, 18:47 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
Код
=ПСТР(A1;ПОИСК("Категория";A1;1);ДЛСТР(A1))


skypro1111@gmail.com
 
Ответить
Сообщение
Код
=ПСТР(A1;ПОИСК("Категория";A1;1);ДЛСТР(A1))

Автор - SkyPro
Дата добавления - 23.01.2015 в 18:47
ill Дата: Пятница, 23.01.2015, 18:53 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
SkyPro, почти vba, но спасибо :D а если категорий 14?
 
Ответить
СообщениеSkyPro, почти vba, но спасибо :D а если категорий 14?

Автор - ill
Дата добавления - 23.01.2015 в 18:53
ill Дата: Пятница, 23.01.2015, 18:56 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Hugo, эм, нет и нет.
Они там точно есть, я их совершенно четко вижу. Даже написание идентичное.
Но и вроде не затирают. Перебор четко по кол-ву категорий, при этом одни и те же категории не находит. Скорее первое, но оно исключается.
[moder]Ну так может стоит сделать так, чтобы и мы четко увидели?
Файл где Ваш?
 
Ответить
СообщениеHugo, эм, нет и нет.
Они там точно есть, я их совершенно четко вижу. Даже написание идентичное.
Но и вроде не затирают. Перебор четко по кол-ву категорий, при этом одни и те же категории не находит. Скорее первое, но оно исключается.
[moder]Ну так может стоит сделать так, чтобы и мы четко увидели?
Файл где Ваш?

Автор - ill
Дата добавления - 23.01.2015 в 18:56
Hugo Дата: Пятница, 23.01.2015, 20:02 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3255
Репутация: 707 ±
Замечаний: 0% ±

2019
Чётко видите? А вот например что видите в этих двух словах:
категория1
кaтегopия1


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеЧётко видите? А вот например что видите в этих двух словах:
категория1
кaтегopия1

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

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