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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2010, 09:14   #21
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Про WHERE не скажу, а вот массив тут совершенно лишний
(как и a(), b(), ii As Long):
Код:
With Sheets(2)
Lr = .Cells(Rows.Count, 1).End(xlUp).Row
End With
For i = 1 To Lr
s = s & "(`Лист1$`.`лиц счет`=" & i & ")"
's = " & "
Next i
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 11.11.2010 в 17:31.
Hugo121 вне форума Ответить с цитированием
Старый 11.11.2010, 09:31   #22
dyakon88
Пользователь
 
Регистрация: 09.11.2010
Сообщений: 22
По умолчанию

почему не скажешь? подскажи пожалуйста!
dyakon88 вне форума Ответить с цитированием
Старый 11.11.2010, 09:56   #23
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

WHERE - это к Евгению...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 11.11.2010, 11:43   #24
dyakon88
Пользователь
 
Регистрация: 09.11.2010
Сообщений: 22
По умолчанию

Почему на эту строку ругается? .Refresh BackgroundQuery:=False
Цитата:
Option Explicit
Sub Макрос2()
Dim Lr As Long, i As Long, s As String

' Макрос2 Макрос
'
'
With ActiveSheet.ListObjects.Add(SourceT ype:=0, Source:=Array(Array( _
"ODBC;DSN=Excel Files;DBQ=C:\Documents and Settings\Юзер\Рабочий стол\ексель\excel\пример.xls;Defaul tDir=C:\Documents and Settings\Юз" _
), Array( _
"ер\Рабочий стол\ексель\excel;DriverId=1046;Max BufferSize=2048;PageTimeout=5;") _
), Destination:=Range("$A$1")).QueryTa ble


With Sheets(2)
Lr = .Cells(Rows.Count, 1).End(xlUp).Row
End With
For i = 1 To Lr
s = s & "(`Лист1$`.`лиц счет`=" & i & ")"
's = " & "
Next i


.CommandText = Array("SELECT `Лист1$`.`лиц счет`, `Лист1$`.фамилия" & Chr(13) & "" & Chr(10) & "FROM `Лист1$` `Лист1$`" & Chr(13) & "" & Chr(10) & "WHERE ( & s)")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "Таблица_Запрос_из_Excel_Files"
.Refresh BackgroundQuery:=False
End With
End Sub

dyakon88 вне форума Ответить с цитированием
Старый 11.11.2010, 16:12   #25
masterenergy
Пользователь
 
Регистрация: 28.08.2009
Сообщений: 34
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Так:
Код:
Option Explicit

Sub otbor()
Dim a(), b(), Lr As Long, i As Long, ii As Long

With Sheets(1)
Lr = .Cells(Rows.Count, 1).End(xlUp).Row
a = .Range("a1:b" & Lr).Value
End With

With Sheets(2)
Lr = .Cells(Rows.Count, 1).End(xlUp).Row
b = .Range("a1:b" & Lr).Value
End With

For i = 1 To UBound(b)
For ii = 1 To UBound(a)
If b(i, 1) = a(ii, 1) Then b(i, 2) = a(ii, 2)
Next ii, i

With Sheets(3)
.Range("a1:b" & UBound(b)).Value = b
End With

End Sub
а если предположим что у нас на втором листе, в первом есть номер которого нет на первом листе, в первом столбце, то тогда этот код выдаёт ошибку в этой строке .Range("a1:b" & UBound(b)).Value = b , пробовал поменять ни чего не получилось! Помогите пожалуйста, сделать так чтобы он переносил этот номер но во второй столбец писал, для примера "Ошибка".

Последний раз редактировалось masterenergy; 11.11.2010 в 17:45.
masterenergy вне форума Ответить с цитированием
Старый 11.11.2010, 17:38   #26
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Нормально отработал и в таком случае. Но можно и написать:

Код:
Option Explicit

Sub otbor()
Dim a(), b(), Lr As Long, i As Long, ii As Long

With Sheets(1)
Lr = .Cells(Rows.Count, 1).End(xlUp).Row
a = .Range("a1:b" & Lr).Value
End With

With Sheets(2)
Lr = .Cells(Rows.Count, 1).End(xlUp).Row
b = .Range("a1:b" & Lr).Value
End With

For i = 1 To UBound(b)
For ii = 1 To UBound(a)
If b(i, 1) = a(ii, 1) Then b(i, 2) = a(ii, 2)
Next ii
If Trim(b(i, 2)) = "" Then b(i, 2) = "Ошибка"
Next i

With Sheets(3)
.Range("a1:b" & UBound(b)).Value = b
End With

End Sub
Хотя тут есть лазейки, например если в первом листе номер будет, но не будет данных, то тоже будет "Ошибка".
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 11.11.2010 в 17:41.
Hugo121 вне форума Ответить с цитированием
Старый 11.11.2010, 18:40   #27
dyakon88
Пользователь
 
Регистрация: 09.11.2010
Сообщений: 22
По умолчанию

Подскажите пожалуйста , как написать макрос с помощью запроса:
1. данные находятся на одном файле Excel на первом листе.
2. надо написать макрос, чтобы он скопировал данные с (1.-с одного файла) на другой файл Excel и тоже на первый лист(разницы нет на какой лист...)
3. Данные находятся на одном столбце под названием (лиц счет)

Пробовал делать сам, ошибки постоянно ( не силен в Excel.
dyakon88 вне форума Ответить с цитированием
Старый 12.11.2010, 07:34   #28
dyakon88
Пользователь
 
Регистрация: 09.11.2010
Сообщений: 22
По умолчанию

Что тут еще не хватает, не хочет работать код...
Цитата:
With Windows("пример.xls").Activate
rr = Windows("пример.xls").SheetViews.It em(2).Sheet.Cells.Copy
End With
With Windows("Книга1.xls").Activate
Windows("Книга1.xls").SheetViews.It em(1).Sheet.Cells.Paste
End With
dyakon88 вне форума Ответить с цитированием
Старый 12.11.2010, 15:56   #29
dyakon88
Пользователь
 
Регистрация: 09.11.2010
Сообщений: 22
По умолчанию

Тему можно закрывать, вопросы решены! Благодарю!
dyakon88 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование поля со списком для отбора данных newgor Microsoft Office Access 2 14.05.2010 20:52
Макрос для экспорта данных в таблицу эксель scythe Microsoft Office Excel 2 21.02.2010 22:18
надо: макрос для обработки данных poll69 Microsoft Office Excel 2 06.02.2010 17:25
Макрос для передачи персанальных данных Evroclidon Microsoft Office Excel 19 01.02.2010 21:12
Условия для отбора в запрос из данных в форме smoky Microsoft Office Access 2 22.09.2008 16:10