Форум на Kuban.ru (http://forums.kuban.ru/)
-   Использование программ (http://forums.kuban.ru/f1025/)
-   -   как перключить функцию если в екселе 97 на буквегные данные (http://forums.kuban.ru/f1025/kak_perklyuchit-_funkciyu_esli_v_eksele_97_na_bukvegnye_dannye-2745073.html)

histor 21.06.2012 07:56

как перключить функцию если в екселе 97 на буквегные данные
 
помогие обуздать эту функцию. Нужно отловить те строки в которых написано слово "сдано". функция "если" тока на цифры реагирует. 0 1, а что положено не желает делать. Пишет "знач"

economist 21.06.2012 17:46

=СУММЕСЛИ(A:A;"сдано";D:D)

economist 22.06.2012 11:52

Если опишете задач более подробно - подскажем как сделать универсальнее. В Excel97 отсутствует чрезвыйчайно удобная ф-я СУММЕСЛИМН сотоварищи, она позволяет выбирать что угодно откуда угодно и пол любым критериям. Сделать это можно также и на других формулах в старых версиях Excel, но геморройнее. Также незаслуженно забыты ф-ии БДСУММ, БДИЗВЛЕЧЬ итп, а между прочим на диком западе с них начинают изучение Excel...

histor 22.06.2012 12:43

Необходимо на второй лист вывести все колонки из первого листа, в одном столбце которых есть чтото отличное от слова "сдано"

economist 22.06.2012 16:09

Телепатирую (если не так - поправьте, колонка это синоним столбца, старайтесь не смешивать понятия):

1-лист
Математика 5 сдано
История 2 задолженность
Химия 1 задолженность


2-й лист - нужно получить формулами:
История 2 задолженность
Химия 4 задолженность

Если так, то:
1) задача м.б. решена формулой массива с в-ей ВПР
2) задача м.б. решена формулами ПРОСМОТР и ИНДЕКС
3) задача м.б. решена автофильтром или расширенным фильтром прямо на данном листе, для его сброса/возврата можно написать малюсенький макрос что будет все равно удобнее двух разных листов.
Выбирайте.

histor 25.06.2012 04:11

На первом листе в первой колонке перечисляются шифры чертежей, на второй кто брал, а в третьей сдано или нет. Необходимо чтобы на второй лист выводило все строки в третьей колонке которых имеется чтото отличное от слова сдано.
1ым и вторым способом наверно будет лучше

histor 25.06.2012 07:00

И хотелось бы чтобы при написании слова сдано на второй странице запись бы оттуда удалялась а на первой странице прописывалась с со словом сдано. Но думаю это фантастика

histor 25.06.2012 07:02

Другими словами на первой странице общий журнал с историей а на втором листе то что не сдано (на руках)

economist 25.06.2012 09:52

histor - Excel умеет очень многое, и даже то, чего от него никто не ожидает. В понедельник туго соображается и простые решения будут непоказательны (после поражения Англии грустно). Поэтому поумничаю, возможно кому-то еще пригодится.

Ну, в общем, вот "промышленное" решение - SQL запрос внутри XLS к самому себе (уровень не чайника, а скажем так, электрического самовара). Пример скачать здесь: [url]http://narod.ru/disk/54088972001.4d30606740c9da9b6f92a94102bd5637/%D0%9A%D0%BD%D0%B8%D0%B3%D0%B01.xls.html[/url]

...
Файл рассчитан на работу в корне диска D, если такого диска нет - придется корректировать строку подключения.

Итак, на листе БАЗА - есть именованны диапазон с именем BASE, сюда мы вносим данные - что и кто.

На другом листе - ОТЧЕТ - вставлен запрос (Данные - получить внешние данные - из других источников - из Microsoft Query - новый ист. данных - любое имя - Microsoft Excel Driver - Связь - Книга1.xls - откроется интерактивный построитель запросов, но если быть проще то можно просто сразу написать

SELECT * FROM BASE WHERE Статус<>'Сдано'

Этот запрос возвращает все столбцы (*) из таблицы BASE, где поле Статус не равно "Сдано".

Сам Excel, как обычно запрос немного подправит до такого (добавит имя таблицы и файла и незначащие скобки)

SELECT BASE.Код, BASE.ФИО, BASE.Статус
FROM `D:\Книга1`.BASE BASE
WHERE (BASE.Статус<>'Сдано')

Сразу скажу, что SQL мощнейшая штука по преобразованию таблиц, при этом крайне надежная и простая. Нет таких условия которые нельзя было бы реализовать. Более того, в запрос можно интерактивно считывать условия из самого Excel.

Запрос имеет кучу доп. параметров, важнейшим из которых является интервал обновления - в книге поставлено обновление ежеминутно.

Вопросы?!

economist 26.06.2012 07:53

Стоит также помнить что сравнение в майкрософтовских движках баз данных/драйверах MSJET и ISAM регистрочувствительно. Т.е. сдано<>Сдано. И уж тем более сдано<>здано, а "здано" пишется элементарно по запарке. Поэтому лучше написать так:

WHERE (BASE2.Статус LIKE '_дано')

лайк означает содержит, а % - любая цепочка символов, а _ - один любой символ. Это позволяет найти даже такие строки: "Марьивановной была здано вовремя" с помощью конструкции LIKE '%дано%'. Только нужно помнить что подстрока дано не такая уж редкая, и может встретиться не там где надо.

Только в лучших традициях Microsoft - с помощью прямого инструмента (утилиты MS Query) это сделать не удастся в MSO2000/XP/2003/2007 и в нек-х ОС (Vista/7), придется щелкать прав. кн. мыши - св-ва вн. данных - св-ва подключ. - определ-е - и вот здесь уже можно править запрос ручками. Через жп, но править можно.

histor 05.07.2012 06:14

Проверить удалось только сегодня. Пишет что источн к данных не найден и не указан драйвер используемый по умолчанию. Наверно нудно путь прописать другой, заместо диска D. Тока неразберусь где его прописывать?

economist 05.07.2012 09:08

histor - "...источн к данных не найден и не указан драйвер используемый по умолчанию..." - значит вы его не создали или создали неправильно (см. п. 8 сло сов Итак...).

Скажите имя файла и путь где он лежит.

В целях совместимости лучше его назвать без пробелов и спецзнаков, и даже латиницей, типа C:\BASE\Biblio.xls

histor 05.07.2012 10:45

C:\journal.xls

economist 05.07.2012 15:04

Тогда так:

В C:\journal.xls есть лист БАЗА, на нем есть именованный диапазон с именем BASE, сюда мы вносим данные - что и кто.

На другом листе - ОТЧЕТ - вставлен запрос (Данные - получить внешние данные - из других источников - из Microsoft Query - новый ист. данных - journal - Microsoft Excel Driver - Связь - C:\journal.xls - Выбрать таблицу по умолчанию (BASE) - откроется MSQuery - щелкунть по звездочке в таблице вверху экрана (добавить все поля) - выбрать Файл-Вернуть данные в Excel - выбрать ячейку для вставки - данные отобразятся все - щелкнуть по той же ячейке прав кн мыши - Таблица - свйоства внеш данных - свойства подключения - Определение запроса - тест команды - вставить

SELECT BASE.Код, BASE.ФИО, BASE.Статус
FROM BASE BASE
WHERE (BASE.Статус<>'Сдано')

Мой пример вообще у вас заработал? Возможно из-за старого офиса или Windows у вас может что-то не заработает. Также возможно не хватит прав если ограниченная учетная запись.

histor 06.07.2012 11:37

Пример заработал в корне диска D

histor 06.07.2012 11:51

Если в базе в графе статус ничего не писать то в отчете это равносильно сдано. И еще такой вопрос. Можнт ли сделать чтобы запись сделанная на листе отчета переньсилась на лист базы, а при заполнении сдано строка удалялась из отчета а в базе прописывалось сдано?


Текущее время: 02:50. Часовой пояс GMT +3.