Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Вывести значение, соответствующее двум условиям. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вывести значение, соответствующее двум условиям. (Макросы/Sub)
Вывести значение, соответствующее двум условиям.
Black_Storm Дата: Воскресенье, 11.01.2015, 16:34 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 55
Репутация: 1 ±
Замечаний: 100% ±

Excel 2007
Всем привет!
Господа, помогите с написанием SQL запроса.
Беру данные из файла с расширением .dbf
В нем мне нужны два столбца - summa и index.
В столбце индекс данные хранятся в формате хх.х хххххххх, где:
хх - номер счета
.х - субсчет
хххххххх - дата в формате гггг.мм.дд.
А теперь, непосредственно перейду к сути.
Мне нужна сумма по столбцу summa, при том, что номер счета равен 50, а дата меньше даты, указанной в ячейке Р1.

Написал следующий запрос:
Set дата = ThisWorkbook.Sheets("Черновик").Cells(1, 16)
Set rs = .Execute("SELECT SUM (summa), FROM znach WHERE MID(operind1, 1, 2) = '50' AND CDATE(MID(operind1, 8, 4) + '-' + MID(operind1, 12, 2) + '-' + MID(operind1, 14, 2)) " < " дата ")

Дальше, соответственно вывод.
Однако, он не работает - точнее, ничего не выводит. Что я делаю не так?
В поле Р1 значения находятся в формате "дата".

Буду признателен!
[moder]Нужны примеры файлов[/moder]
 
Ответить
СообщениеВсем привет!
Господа, помогите с написанием SQL запроса.
Беру данные из файла с расширением .dbf
В нем мне нужны два столбца - summa и index.
В столбце индекс данные хранятся в формате хх.х хххххххх, где:
хх - номер счета
.х - субсчет
хххххххх - дата в формате гггг.мм.дд.
А теперь, непосредственно перейду к сути.
Мне нужна сумма по столбцу summa, при том, что номер счета равен 50, а дата меньше даты, указанной в ячейке Р1.

Написал следующий запрос:
Set дата = ThisWorkbook.Sheets("Черновик").Cells(1, 16)
Set rs = .Execute("SELECT SUM (summa), FROM znach WHERE MID(operind1, 1, 2) = '50' AND CDATE(MID(operind1, 8, 4) + '-' + MID(operind1, 12, 2) + '-' + MID(operind1, 14, 2)) " < " дата ")

Дальше, соответственно вывод.
Однако, он не работает - точнее, ничего не выводит. Что я делаю не так?
В поле Р1 значения находятся в формате "дата".

Буду признателен!
[moder]Нужны примеры файлов[/moder]

Автор - Black_Storm
Дата добавления - 11.01.2015 в 16:34
Gustav Дата: Понедельник, 12.01.2015, 10:52 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2748
Репутация: 1138 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Ну попробуйте как-то так:
[vba]
Код
дата = ThisWorkbook.Sheets("Черновик").Cells(1, 16)  'без Set
Set rs = .Execute("SELECT SUM(summa) FROM znach WHERE MID(operind1, 1, 2) = '50' AND MID(operind1, 6, 8) < '" & Format(дата, "yyyymmdd") & "'")
[/vba]


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Понедельник, 12.01.2015, 10:55
 
Ответить
СообщениеНу попробуйте как-то так:
[vba]
Код
дата = ThisWorkbook.Sheets("Черновик").Cells(1, 16)  'без Set
Set rs = .Execute("SELECT SUM(summa) FROM znach WHERE MID(operind1, 1, 2) = '50' AND MID(operind1, 6, 8) < '" & Format(дата, "yyyymmdd") & "'")
[/vba]

Автор - Gustav
Дата добавления - 12.01.2015 в 10:52
Black_Storm Дата: Понедельник, 12.01.2015, 13:50 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 55
Репутация: 1 ±
Замечаний: 100% ±

Excel 2007
Утро, как говорится, вечера мудренее... :)
Gustav, Благодарю. Чуток по-другому получилось:
[vba]
Код

Set дата = ThisWorkbook.Sheets("Черновик").Cells(1, 16)
Set rs = .Execute("SELECT SUM(summa) FROM znach WHERE CDATE(MID(operind1, 8, 4) + " & _
     "'-' + MID(operind1, 12, 2) + '-' + MID(operind1, 14, 2)) < #" & Format(дата, "yyyy-mm-dd") & "# AND MID(operind1, 1, 2) = '50'")
[/vba]
 
Ответить
СообщениеУтро, как говорится, вечера мудренее... :)
Gustav, Благодарю. Чуток по-другому получилось:
[vba]
Код

Set дата = ThisWorkbook.Sheets("Черновик").Cells(1, 16)
Set rs = .Execute("SELECT SUM(summa) FROM znach WHERE CDATE(MID(operind1, 8, 4) + " & _
     "'-' + MID(operind1, 12, 2) + '-' + MID(operind1, 14, 2)) < #" & Format(дата, "yyyy-mm-dd") & "# AND MID(operind1, 1, 2) = '50'")
[/vba]

Автор - Black_Storm
Дата добавления - 12.01.2015 в 13:50
Gustav Дата: Понедельник, 12.01.2015, 14:19 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2748
Репутация: 1138 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Ни в жисть не поверю, что и по-моему (более короткому и простому) не получилось! Или не проверяли? ;)

P.S. И не надо "Set дата" делать. Set - это для объектных переменных, не для простых. Для простых, если уж так хочется, напишите Let. А так вообще - просто дата, без всяких дополнительных слов.

P.P.S. И кстати, почему с 8-го символа начинаете год извлекать? В шаблоне "хх.х хххххххх" первая цифра года получается 6-я... Или чего-то не договорили нам?


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Понедельник, 12.01.2015, 14:25
 
Ответить
СообщениеНи в жисть не поверю, что и по-моему (более короткому и простому) не получилось! Или не проверяли? ;)

P.S. И не надо "Set дата" делать. Set - это для объектных переменных, не для простых. Для простых, если уж так хочется, напишите Let. А так вообще - просто дата, без всяких дополнительных слов.

P.P.S. И кстати, почему с 8-го символа начинаете год извлекать? В шаблоне "хх.х хххххххх" первая цифра года получается 6-я... Или чего-то не договорили нам?

Автор - Gustav
Дата добавления - 12.01.2015 в 14:19
Black_Storm Дата: Понедельник, 12.01.2015, 15:48 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 55
Репутация: 1 ±
Замечаний: 100% ±

Excel 2007
Gustav, там еще два пробела, как оказалось.
Set убрал - случайно попало снова.
Ваш метод проверял - не сработал.
Скорее всего из-за того, что не посмотрел с какого символа начинается извлечение.
Сейчас попробую еще раз. :)


Сообщение отредактировал Black_Storm - Понедельник, 12.01.2015, 15:48
 
Ответить
СообщениеGustav, там еще два пробела, как оказалось.
Set убрал - случайно попало снова.
Ваш метод проверял - не сработал.
Скорее всего из-за того, что не посмотрел с какого символа начинается извлечение.
Сейчас попробую еще раз. :)

Автор - Black_Storm
Дата добавления - 12.01.2015 в 15:48
Black_Storm Дата: Понедельник, 12.01.2015, 15:54 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 55
Репутация: 1 ±
Замечаний: 100% ±

Excel 2007
Gustav, Работает, спасибо! :)


Сообщение отредактировал Black_Storm - Понедельник, 12.01.2015, 16:09
 
Ответить
СообщениеGustav, Работает, спасибо! :)

Автор - Black_Storm
Дата добавления - 12.01.2015 в 15:54
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вывести значение, соответствующее двум условиям. (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!