Страница 1 из 1

проблема со связыванием данных в excel

Добавлено: 14 апр 2010, 12:33
Talexa
добрый день!
я столкнулась с проблемой связывания в excel - помогите, пожалуйста...
у меня есть две таблички excel - одна автоформируемая, другая заполняется пользователями в удобном для них формате. мне нужно подтянуть в автоформируемую таблицу значения из второй по ключевому полю...
по неизвестной мне причине, excel "не видит" совпадающие значения из этих таблиц...
попробовала сделать тоже самое в VBA - тоже не получается...
что я делаю не так?
заранее спасибо!

Файлы выложила здесь: http://ifolder.ru/17284971

Re: проблема со связыванием данных в excel

Добавлено: 14 апр 2010, 14:47
nilem
У Вас в 2-х файлах 3 таблицы. Какая из них автоформируемая, а какая - пользовательская? Ключевое поле - где? И совпадающие значения в каком столбце?

Re: проблема со связыванием данных в excel

Добавлено: 14 апр 2010, 14:49
Talexa
nilem писал(а):У Вас в 2-х файлах 3 таблицы. Какая из них автоформируемая, а какая - пользовательская? Ключевое поле - где? И совпадающие значения в каком столбце?
автоформируемая - listorders в отчете по машинам
пользовательская - реестр
совпадающие значения в следующих столбцах- заказ в первой, СЛУЖЕБНОЕ ПОЛЕ во второй; и, соот-но, если они совпадают, нужна пометка (например, единица) в поле Претензии на listorders

Вот так я пыталась прописать это в VBA:

Option Explicit

Public save_file As String
Public save_file_name As String
Public CurBook As Workbook ' текущий файл
Public EvaBook As Workbook ' файл по претензиям

Public Sub Кнопка1_Щелчок()
' открыть файл по претензиям
Set CurBook = ActiveWorkbook
save_file = Application.GetOpenFilename("Workbooks(*xls),*xls", , "Открыть файл с результатами поледней оценки")
If save_file = "False" Then
End ' выходим, если не задано имя файла для иерархии
Else
Workbooks.Open Filename:=save_file
Dim a As String, b, b1 As Integer
a = Len(save_file)
b = InStrRev(save_file, "\")
b1 = b + 1
save_file_name = Mid(save_file, b1)
End If
' связываем переменную с файлом
Set EvaBook = ActiveWorkbook
' ищем номера директив и переносим данные по претензиям...
Dim firstrange As Range, secondrange As Range
Dim i As Integer, j As Integer
Dim mystr1 As String, mystr2 As String

Set firstrange = EvaBook.Worksheets("2010 (1МИП)").Cells(4, 2).CurrentRegion
Set secondrange = CurBook.Worksheets("ListOrders").Cells(3, 1).CurrentRegion

For i = 2 To secondrange.Rows.Count
If secondrange(i, 1) <> "" Then
For j = 3 To firstrange.Rows.Count
If firstrange(j, 11).Value <> "" Then
mystr1 = CStr(secondrange(i, 1).Value)
mystr2 = CStr(firstrange(j, 40).Value)
If StrComp(mystr1, mystr2, 1) = 0 Then
MsgBox mystr2
secondrange(i, 6).Value = 1
End If
End If
Next j
End If
Next i


EvaBook.Close

End Sub

Re: проблема со связыванием данных в excel

Добавлено: 15 апр 2010, 07:21
nilem
Подправьте формулу в столбце СЛУЖЕБНОЕ ПОЛЕ. Формула оставляет лишний пробел справа, поэтому Эксель не находит одинаковых значений. А так все можно сделать формулами, без макросов.

Re: проблема со связыванием данных в excel

Добавлено: 15 апр 2010, 19:14
Talexa
Спасибо! Нашла это "злополучное" место... Исправила - все работает :D