Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.08.2012, 04:07   #1
Yusch
Пользователь
 
Регистрация: 10.02.2012
Сообщений: 16
По умолчанию поиск в диапазоне

Добрый день!

Сравниваю значение листа 1 с диапазоном а3:а10 с листа 2
Вопрос: как вычислить номер строки из диапазона при совпадении? Или как перейти в другой столбец соответствующей строки
Yusch вне форума Ответить с цитированием
Старый 24.08.2012, 07:16   #2
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Вопрос: как вычислить номер строки из диапазона при совпадении?
функция
Код:
=ПоискПоз(...)
Цитата:
Или как перейти в другой столбец соответствующей строки
Код:
Cells(ActiveCells.Row, Номер столбца).Select
в макросе
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 24.08.2012, 08:39   #3
Yusch
Пользователь
 
Регистрация: 10.02.2012
Сообщений: 16
По умолчанию

Такое решение не подходит т.к. переходит не в диапазоне.

Вообщем у меня проблема в том, что мне нужно с листа 3 вытащить соответствующий тариф. Тариф берется в том случае, если совпадает номер договора и инн, т.е. если лист1.договор=лист3.договор и лист1.инн=лист3.инн, то лист1.тариф=лист3.тариф
Сделала проверку по договору, а дальше незнаю как сделать проверку по ИНН и вытащить соответствующий тариф
вот код:
Sub Tarif()
Dim DogCell As Object

Dim Dogovor As Range
Dim Tarif As Variant

Dim InnVklad As Range
Dim InnBaza As Range

Dim n As Integer




Workbooks("Расчетная таблица.xlsx").Worksheets(1).Activa te
Range("a2").Select

Do Until IsEmpty(ActiveCell)
Set Dogovor = ActiveCell

If Dogovor > 0 Then
For Each DogCell In Workbooks("Расчетная таблица.xlsx").Worksheets(3).Range( "b2:b5")
If DogCell = Dogovor Then
MsgBox ("Совпадение")
' Переход на соответствующий ИНН.лист1
Cells(ActiveCell.Row, 5).Select
Set InnVklad = ActiveCell
'Здесь не знаю как задать диапазон сравнения

'For Each InnCell In Workbooks("Расчетная таблица.xlsx").Worksheets(3).Cells( ActiveCell.Row, 1)

Else: MsgBox ("Не совпадает")
End If
Next DogCell

Else: GoTo nn
End If

nn:
ActiveCell.Offset(1, 0).Select
Loop
End Sub
Yusch вне форума Ответить с цитированием
Старый 24.08.2012, 08:42   #4
Yusch
Пользователь
 
Регистрация: 10.02.2012
Сообщений: 16
По умолчанию

Вот файл с которым работаю
Вложения
Тип файла: rar РасчетнаяТаблица.rar (10.3 Кб, 13 просмотров)
Yusch вне форума Ответить с цитированием
Старый 24.08.2012, 09:04   #5
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Код:
=СУММПРОИЗВ((База!$A$2:$A$7=Вклады!E2)*(База!$B$2:$B$7=Вклады!A2)*База!$C$2:$C$7)
в ячейку Вклады!G2 и протягиваете...
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 27.08.2012, 10:13   #6
Yusch
Пользователь
 
Регистрация: 10.02.2012
Сообщений: 16
По умолчанию

Данная формула работает если руками протягивать, а когда делаю вставку формулы в ячейку и протягиваю формула вставляется, но около ячейки выходит ошибка " формала содержит не распознаный текст"
Вставляю так:
Range("g2").formula="=формула"
Range(cells(startrow,startcol),cell s(endrow,endcol).filldown
Подскажите как исправить или может есть другой вариан решения?
Yusch вне форума Ответить с цитированием
Старый 27.08.2012, 10:40   #7
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Код:
  [g2].FormulaLocal = "=СУММПРОИЗВ((База!$A$2:$A$7=Вклады!E2)*(База!$B$2:$B$7=Вклады!A2)*База!$C$2:$C$7)"
  [g2:g4].FillDown
у меня всё нормально работает.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 27.08.2012, 11:01   #8
Yusch
Пользователь
 
Регистрация: 10.02.2012
Сообщений: 16
По умолчанию

Теперь все ок! Если диапазон ячеек меняется в базе тоже , как в формуле будет задаваться диапазон до последней не пустой ячейке
Yusch вне форума Ответить с цитированием
Старый 27.08.2012, 11:21   #9
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Код:
Sub dd()
  BasaEndRow = Sheets("База").Cells(Sheets("База").Rows.Count, 2).End(xlUp).Row
  VkladyEndRow = Sheets("Вклады").Cells(Sheets("Вклады").Rows.Count, 2).End(xlUp).Row
  [g2].FormulaLocal = "=СУММПРОИЗВ((База!$A$2:$A$" & BasaEndRow & "=Вклады!E2) _
                              *(База!$B$2:$B$" & BasaEndRow & "=Вклады!A2) _
                              *База!$C$2:$C$" & BasaEndRow & ")"
  Range("G2:G" & VkladyEndRow).FillDown
End Sub
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск значения в диапазоне формулами Bape}l{ka Microsoft Office Excel 5 15.05.2012 18:04
Поиск значения в заданном диапазоне данных Варвар Microsoft Office Excel 2 21.01.2011 11:23
Поиск значения в диапазоне Sergey112233 Microsoft Office Excel 2 19.12.2010 20:54
Поиск в диапазоне с двумя условиями fury1986 Microsoft Office Excel 2 31.01.2010 18:54
Поиск диапазоне по формату ячейки Meta2 Microsoft Office Excel 2 11.11.2009 13:57