Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Подкачка данных из другой таблицы с условием / 11 сообщений из 11, страница 1 из 1
29.07.2009, 09:46
    #36114807
Nik_Koraman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подкачка данных из другой таблицы с условием
Всем привет!
нужно осуществить подкачку данных, а именно ячейки в строку, из другой таблицы excel при условии совпадения в данной строке других 3-х ячеек.
Т.е при совпадении даты смены и номера машины в одной строке, количество изготовленной продукции должна скопироваться в соответствующую ячейку другого файла
...
Рейтинг: 0 / 0
29.07.2009, 11:07
    #36114990
Nik_Koraman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подкачка данных из другой таблицы с условием
подкачку сделал следующим образом
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Sub Button2_Click()
Dim i As Integer

For i =  0  To  10  Step  1 

If (Workbooks("BD_VBA.xls").Worksheets("sheet1").Cells( 5  + i,  1 ) = Workbooks("book2.xls").Worksheets("sheet1").Cells( 3  + i,  1 )) And (Workbooks("BD_VBA.xls").Worksheets("sheet1").Cells( 5  + i,  2 ) = Workbooks("book2.xls").Worksheets("sheet1").Cells( 3  + i,  2 )) Then


Windows("BD_VBA.xls").Activate
Cells( 5  + i,  5 ).Select
Selection.Copy
Windows("book2.xls").Activate
Cells( 3  + i,  9 ).Select
ActiveSheet.Paste

End If

Next i

End Sub
но если второй файл не запущен тогда не срабатывает, подскажите плиз как это исправить
...
Рейтинг: 0 / 0
29.07.2009, 14:45
    #36115644
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подкачка данных из другой таблицы с условием
> Автор: Nik_Koraman
> но если второй файл не запущен тогда не срабатывает, подскажите плиз как это исправить

Проверять открыт ли нужный файл:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Dim sh As Worksheet
On Error Resume Next
Set sh = Application.Workbooks("BD_VBA.xls")
If Err.Number <>  0  Then
   MsgBox "Откройте нужный файл"
   Exit Sub
EndIf
'Дальше код выполнения переноса данных



Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
29.07.2009, 17:11
    #36116160
Nik_Koraman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подкачка данных из другой таблицы с условием
почему-то даже при открытом файле он пишет "откройте файл"
...
Рейтинг: 0 / 0
29.07.2009, 17:36
    #36116225
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подкачка данных из другой таблицы с условием
> Автор: Nik_Koraman
> почему-то даже при открытом файле он пишет "откройте файл"

Код покажи


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
30.07.2009, 10:03
    #36117053
Nik_Koraman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подкачка данных из другой таблицы с условием
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
Sub Button2_Click()

'Дальше код выполнения переноса данных

Dim i As Integer
Dim j As Integer
Dim s As Long
Dim s1 As Long
Dim s2 As Long
Dim s3 As Long
Dim n As Integer
Dim p As Integer
Dim nn As Integer
n = Worksheets("sheet1").Cells( 1 ,  18 ).Value -  1 
nn = Workbooks("BD_VBA.xls").Worksheets("sheet1").Cells( 1 ,  18 ).Value


For i =  0  To n Step  1 
j =  0 
For j =  0  To nn Step  1 
If (Workbooks("BD_VBA.xls").Worksheets("sheet1").Cells( 5  + i + j,  1 ) = Workbooks("book2.xls").Worksheets("sheet1").Cells( 3  + i,  1 )) And (Workbooks("BD_VBA.xls").Worksheets("sheet1").Cells( 5  + i + j,  2 ) = Workbooks("book2.xls").Worksheets("sheet1").Cells( 3  + i,  2 )) And (Workbooks("BD_VBA.xls").Worksheets("sheet1").Cells( 5  + i + j,  8 ) = Workbooks("book2.xls").Worksheets("sheet1").Cells( 3  + i,  3 )) Then


Windows("BD_VBA.xls").Activate
Cells( 5  + i + j,  5 ).Select
Selection.Copy
Windows("book2.xls").Activate
Cells( 3  + i,  9 ).Select
ActiveSheet.Paste

End If
Next j
Next i

For i =  0  To n Step  1 
j =  0 
For j =  0  To nn Step  1 
If (Workbooks("BD_VBA.xls").Worksheets("sheet1").Cells( 5  + i + j,  1 ) = Workbooks("book2.xls").Worksheets("sheet1").Cells( 3  + i,  1 )) And (Workbooks("BD_VBA.xls").Worksheets("sheet1").Cells( 5  + i + j,  2 ) = Workbooks("book2.xls").Worksheets("sheet1").Cells( 3  + i,  2 )) And (Workbooks("BD_VBA.xls").Worksheets("sheet1").Cells( 5  + i + j,  9 ) = Workbooks("book2.xls").Worksheets("sheet1").Cells( 3  + i,  3 )) Then


Windows("BD_VBA.xls").Activate
Cells( 5  + i + j,  6 ).Select
Selection.Copy
Windows("book2.xls").Activate
Cells( 3  + i,  10 ).Select
ActiveSheet.Paste

End If
Next j
Next i


For i =  0  To n Step  1 
j =  0 
For j =  0  To nn Step  1 
If (Workbooks("BD_VBA.xls").Worksheets("sheet1").Cells( 5  + i + j,  1 ) = Workbooks("book2.xls").Worksheets("sheet1").Cells( 3  + i,  1 )) And (Workbooks("BD_VBA.xls").Worksheets("sheet1").Cells( 5  + i + j,  2 ) = Workbooks("book2.xls").Worksheets("sheet1").Cells( 3  + i,  2 )) And (Workbooks("BD_VBA.xls").Worksheets("sheet1").Cells( 5  + i + j,  10 ) = Workbooks("book2.xls").Worksheets("sheet1").Cells( 3  + i,  3 )) Then


Windows("BD_VBA.xls").Activate
Cells( 5  + i + j,  7 ).Select
Selection.Copy
Windows("book2.xls").Activate
Cells( 3  + i,  11 ).Select
ActiveSheet.Paste

End If
Next j
Next i

For i =  0  To n Step  1 

                               If Worksheets("sheet1").Cells( 3  + i,  11 ) = " - " Or Worksheets("sheet1").Cells( 3  + i,  11 ) = "" Then Worksheets("sheet1").Cells( 3  + i,  11 ) =  0 
  
                               s3 = Worksheets("sheet1").Cells( 3  + i,  11 ).Value

 
                               If Worksheets("sheet1").Cells( 3  + i,  10 ) = " - " Or Worksheets("sheet1").Cells( 3  + i,  10 ) = "" Then Worksheets("sheet1").Cells( 3  + i,  10 ) =  0 
                               s2 = Worksheets("sheet1").Cells( 3  + i,  10 ).Value
                               If Worksheets("sheet1").Cells( 3  + i,  9 ) = " - " Or Worksheets("sheet1").Cells( 3  + i,  9 ) = "" Then Worksheets("sheet1").Cells( 3  + i,  9 ) =  0 
                               s1 = Worksheets("sheet1").Cells( 3  + i,  9 ).Value
                               s = s1 + s2 + s3
                               Worksheets("sheet1").Cells( 3  + i,  6 ).Value = s
 Next i

 
End Sub
вот код, желательно чтобы он подкачивал данные из BD_VBA.xls без его открытия, если это невозможно, тогда чтобы он автоматически открывался
...
Рейтинг: 0 / 0
30.07.2009, 13:59
    #36117951
Nik_Koraman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подкачка данных из другой таблицы с условием
неужели ни у кого идей нет?=(
...
Рейтинг: 0 / 0
30.07.2009, 14:28
    #36118056
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подкачка данных из другой таблицы с условием
> Автор: Nik_Koraman
> неужели ни у кого идей нет?=(

Я просил код проверки открытости книги, а не перенос данных.
А идеи должны быть у тебя ;) потому, что вникать в твой код, особого желания нет, к тому-же неформатированный.
Могу помочь советом с конкретными вопросами, напимер, проверка открытости книги, или что-то подобное


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
30.07.2009, 15:21
    #36118263
Nik_Koraman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подкачка данных из другой таблицы с условием
конкретный вопрос=)) как обеспечить подкачку данных из закрытого файла

Код: plaintext
1.
2.
3.
4.
5.
Windows("BD_VBA.xls").Activate
Cells( 5  + i + j,  7 ).Select
Selection.Copy
Windows("book2.xls").Activate
Cells( 3  + i,  11 ).Select
ActiveSheet.Paste

таким образом подкачивает только из открытого=((
...
Рейтинг: 0 / 0
04.08.2009, 18:59
    #36126376
Krasnaja Shapka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подкачка данных из другой таблицы с условием
VBA не в состоянии это сделать, но вы сможете достичь
поставленной цели с помощью языка XLM. К счастью, XLM можно вызвать из VBA. Ниже приведен простой пример получения значения ячейки А1 из листа Sheet1 рабочей книги myfile.xls, которая находится в папке c:\files
MsgBox ExecuteExcel4Macro("'c:\files\[myfile.xls]Sheet1'!R1C1")
Обратите вниманиена то, что ячейка должна быть в формате R1C1
...
Рейтинг: 0 / 0
04.08.2009, 19:02
    #36126380
Krasnaja Shapka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подкачка данных из другой таблицы с условием
но честно говоря я бы юзал обычную формулу прямо в листе, без всякого VBA... что-то типа
Код: plaintext
=SUMPRODUCT((условие1)*(условие2)*диапазон)
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Подкачка данных из другой таблицы с условием / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]