Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   простой скрипт для Экселя (http://forum.oszone.net/showthread.php?t=100050)

darel 06-02-2008 20:17 734410

простой скрипт для Экселя
 
нужен скрипт, который:

будет проходить по таблице, смотреть колонку с датой и, если она достаточно устарела, копировать определенное поле текущей строки в отдельный файл. То есть по сути будет делать список того, что нужно обновить.

Здесь как-то можно обойтись встроенным средствами экселя или нужно что-то стороннее? Если нельзя и при этом всё должно работать на любой машине(то есть, например, PHP и C# нельзя использовать), то остается только C++ с какими-то библиотеками или есть еще варианты?

Спасибо.

Alexej77 06-02-2008 21:54 734487

Зачем С++? Встроенный VBA прекрасно справится!

darel 06-02-2008 22:29 734519

О, спасибо, то что нужно

Drongo 07-02-2008 20:25 735244

А такой вопрос в тему, а можно ли VBA как-нибудь "заточить" такой вариант сортировки, как в Vista, по цвету ячейки, тоесть, если есть таблица, с ячейками разного цвета, в которых находится разные суммы счетов, то Office 2007 позволяет делать сортировку по цвету, это удобно поскольку если для России будет цвет белый, для Белоруссии - синий, для Украины - красный, так легко искать счета для какой то одной страны, сортировка по странам это не то, поскольку сортировка по цвету расширяемая, ею можно тоньше настроить саму сортировку и т.д., но в Office 2003 такой функции нет, я тут задумался, и прикинул, а нельзя ли написать скрипт или макрос выполняющий сиё?! Правда нужно отметить, что макросы я умею писать самые что ни на есть примивные, до ужаса, проще сказать, не умею... иной раз мне кажется, что можно это сделать, иной раз, я сомневаюсь... Может кто-нибудь написать такую "штуку"?! Или подсказать, что что-нибудь по этому вопросу, в каком направлении рыть?!
P.S. Не на всех компах идёт Office 2007, а многие в силу его внешнего вида "запутаности", поскольку нужно изучать почти заново, где и что, не жалуют этот продукт своим вниманием...
Буду признателен...

Alexej77 07-02-2008 21:44 735336

Drongo, конечно, можно написать такую "штуку". На VBA вообще очень много чего можно, если скорость не сильно критична.
Думаю, так (на примере одной колонки):
1. Определить кол-во ячеек, подлежащих сортировке.
2. Создать массив с двумя столбами: содержимое ячейки и ее цвет.
3. Отсортировать этот массив по цвету.
4. Засунуть содержимое массива обратно в ячейки, начиная с первой, не забывая раскрасить в нужный цвет.

Или так:
Написать функцию, которая определяет цвет ячейки.
Код:

Function cellcolor(cell As Range) As Integer
    cellcolor = Range(cell.Address).Interior.ColorIndex
End Function

Эту функцию прописать рядом с теми ячейками, которые надо отсортировать. А потом сортируем по этим двум столбцам.

Drongo 08-02-2008 12:05 735712

Цитата:

Цитата Alexej77
Написать функцию, которая определяет цвет ячейки. »

Написать в Excel'e или в скрипте?!

Alexej77 08-02-2008 20:00 736088

Drongo, на VBA. Собственно, я ее уже написал.

Drongo 09-02-2008 17:51 736680

Цитата:

Цитата Alexej77
Drongo, на VBA. Собственно, я ее уже написал. »

Да? А как же тогда её подключить?! Я только простейшие макросы записать могу, ну типа, высчитать в каких то ячейках и листах. Как вашу функцию подключить?!

Alexej77 10-02-2008 00:05 736946

Drongo, очень просто. Там, где ты пишешь
Цитата:

Цитата Drongo
простейшие макросы »

там же пишешь вышеприведенную функцию. Теперь ее можешь использовать в этой книге, например, так
Код:

=cellcolor(A1)

Drongo 10-02-2008 13:17 737154

Спасибо, решено!


Время: 11:53.

Время: 11:53.
© OSzone.net 2001-