0 / 0 / 0
Регистрация: 18.10.2014
Сообщений: 14
1
Excel

Сравнение значения в ячейке со значением в диапазоне

25.05.2018, 16:13. Показов 14616. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день. Потребовалось сравнить значения.
Допустим в столбце А записываются по порядку цифры с 1 и до какого-нибудь значения. В разных книгах их количество различно.
В столбце AS также записываются цифры в произвольном порядке, но их либо всегда меньше, то есть какое-нибудь число пропущено, либо одинаковое количество.
Задача такая, что бы макрос искал в столбце AS число, которое находится в ячейке A1 (это будет число 1) и если находит его, то в другую ячейку в этой же строке, но в другом столбце, записывалось значение, а если нет, то ставится пустота. И так по каждой ячейке.
Я написал код, но вылезает ошибка 13

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub zakr()
Dim x, y, z, a, b, c As Variant
Dim e As Range
x = 3
'определяем количество ячеек'
Do
If Cells(x, 3) = "" Then
Cells(x, 39) = 0
Else: Cells(x, 39) = 1
End If
x = x + 1
Loop Until Cells(x - 1, 39) = 0
'Собственно проблема здесь в сравнении во второй строке вылезает ошибка 13'
Do
Set Cells(e, 1) = Range("AS:AS").Find(vValue)
If Cells(e, 1) Is Nothing Then
Cells(e, 4) = ""
Else: Cells(e, 4) = Cells(e, 3)
End If
e = e + 1
Loop Until Cells(e, 39) = 0
end sub
кусок кода с определение количества заполненных ячеек лучше не менять.
Отвечу на любой вопрос по пояснениям.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.05.2018, 16:13
Ответы с готовыми решениями:

Сравнение значения в Лэйбле со значением в ячейке базы данных
Существует база данных. В ячейке записано значение(числовое). А также существует Лэйбл с числовым...

Подсчет колл ячеек в диапазоне в зависимости от цвета ячейки и значения в смежной ячейке
Добрый день уважаемые специалисты, Помогите пожалуйста с формулой (можно макрос) для подсчет...

Сравнение значения переменной со значением из txt-файла
Ребят мне надо чтобы программа проверяла данную из .txt и сверяла её с данными из переменной i Там...

Поиск минимального значения в 1 таблице и сравнение с минимальным значением 2 таблицы
Всем привет! Не могу решить казалось бы простую задачу. На одном листе есть 2 таблицы, в них по 2...

8
...
39 / 37 / 13
Регистрация: 08.10.2016
Сообщений: 171
25.05.2018, 16:21 2
Переменная объектного типа
Цитата Сообщение от danbas Посмотреть сообщение
Dim e As Range
у Вас в строке 15 там где ей не место.
1
2724 / 1701 / 776
Регистрация: 23.03.2015
Сообщений: 5,388
25.05.2018, 17:00 3
danbas,

Давайте уточним вашу задачу:

1) В столбце "А" записаны числа ( не цифры) без пробелов и по порядку.... ( допустим от 1 до 15 )
2) В столбце "AS" записаны числа ( не цифры) в произвольном порядке , причем их <= чем в столбце "А"
Необходимо уточнение:
а) Есть ли повторяющиеся числа в столбце "AS"?
3) Нужно пройтись по столбцу "AS" и если число в строке x столбца " AS" совпадает с числом в строке у столбца "А" то нужно
( напишите в какой столбец и в какую строку какие данные занести )... Например:

В столбец справа от "AS" на строчку х занести данные столбца "А" строки у
1
0 / 0 / 0
Регистрация: 18.10.2014
Сообщений: 14
27.05.2018, 15:28  [ТС] 4
Narimanych,
1) повторяющихся чисел в столбце AS не будет.
Пример:
Допустим в столбце А у нас числа от 1 до 10. В столбце AS числа от 2 до 7 в произвольном порядке.
В столбце B у нас определенные данные(не имеет значения какие).
Начинаем с ячейки A1 там занесено число 1
Если в столбце AS у нас нет числа 1, тогда в ячейку C1 никакие данные не заносятся.
Далее переходим в ячейку A2, если в столбце AS есть число 2, то в ячейку C2 копируются данные из ячейки В2.
И так далее

Добавлено через 4 минуты
ji2n,
По идее же переменная e должна быть значением, которое будет найдено или не найдено в диапазоне AS, почему ее нельзя задать как range? И если нельзя, то какой тип ей дать тогда?
0
2724 / 1701 / 776
Регистрация: 23.03.2015
Сообщений: 5,388
27.05.2018, 16:29 5
danbas,

Как вариант:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub For_danbas()
LR_A = Cells(Rows.Count, 1).End(xlUp).Row
LR_AS = Cells(Rows.Count, 45).End(xlUp).Row
Application.ScreenUpdating = False
For i = 1 To LR_A
    For j = j To LR_AS
       If Cells(LR_A, 1).Value = Cells(LR_AS, 45).Value Then
         Cells(LR_A, 2) = Cells(LR_A, 3)
         Exit For
       End If
    Next j
Next j
Application.ScreenUpdating = True
End Sub
Добавлено через 1 минуту
Строка 6 For j=1 to LR_AS
1
15145 / 6418 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
27.05.2018, 16:47 6
Цитата Сообщение от danbas Посмотреть сообщение
Начинаем с ячейки A1 там занесено число 1
Если в столбце AS у нас нет числа 1, тогда в ячейку C1 никакие данные не заносятся.
Далее переходим в ячейку A2, если в столбце AS есть число 2, то в ячейку C2 копируются данные из ячейки В2.
И так далее
Для этого не нужен VBA, достаточно простой формулы
Код
=ЕСЛИ(СЧЁТЕСЛИ(AS:AS;A1);B1;"")
ну или макросом
Visual Basic
1
2
3
4
5
6
Sub Da()
  With Range("C1:C" & Cells(Rows.Count, 1).End(xlUp).Row)
    .Formula = "=IF(COUNTIF(AS:AS,A1),B1,"""")"
    .Value = .Value
  End With
End Sub
1
0 / 0 / 0
Регистрация: 18.10.2014
Сообщений: 14
27.05.2018, 19:36  [ТС] 7
Большое спасибо.
Вариант Казанского работает. Конечно можно и формулами все раскидать, но ведь макрос позволяет это делать одним кликом)

Narimanych,
код работает без ошибок, но, почему то ячейки не заполняются. Ничего не происходит.
0
2724 / 1701 / 776
Регистрация: 23.03.2015
Сообщений: 5,388
27.05.2018, 20:02 8
Цитата Сообщение от danbas Посмотреть сообщение
то ячейки не заполняются
Замените
Cells(LR_A, 2) = Cells(LR_A, 3) ( строчка 8) на

Cells(LR_A, 3) = Cells(LR_A, 2)
1
...
39 / 37 / 13
Регистрация: 08.10.2016
Сообщений: 171
28.05.2018, 18:36 9
Цитата Сообщение от danbas Посмотреть сообщение
ji2n,
По идее же переменная e должна быть значением, которое будет найдено или не найдено в диапазоне AS, почему ее нельзя задать как range? И если нельзя, то какой тип ей дать тогда?
Цитата Сообщение от danbas Посмотреть сообщение
Dim e As Range
Переменная е объявлена как объект Range (!)
Цитата Сообщение от danbas Посмотреть сообщение
Cells(e, 4) = Cells(e, 3)
- Cells(RowIndex, ColumnIndex), где аргументы целые положительные числа.

Добавлено через 8 минут
Цитата Сообщение от danbas Посмотреть сообщение
то какой тип ей дать тогда?
Long, например.
1
28.05.2018, 18:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.05.2018, 18:36
Помогаю со студенческими работами здесь

Поиск минимального значения в 1 таблице и сравнение с минимальным значением 2 таблицы
Всем привет! Не могу решить казалось бы простую задачу.* На одном листе есть 2 таблицы, в них по 2...

Вычисление конечной суммы N элементов и сравнение полученного значения с контрольным значением
Как на Borland C 3.1 наклепать прогу, выполняющую вычисление конечной суммы N элементов и сравнения...

Ввод значения/редактирование в ячейке, дублирование всех действий в другой ячейке
Как-то давненько попадалась статья в интернете: при вводе данных в одну ячейку, например, текста, в...

Ввод значения/редактирование в ячейке, дублирование всех действий в другой ячейке
Как-то давненько попадалась статья в интернете: при вводе данных в одну ячейку, например, текста, в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru