Войти

Показать полную графическую версию : простой скрипт для Экселя


darel
06-02-2008, 20:17
нужен скрипт, который:

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

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

Спасибо.

Alexej77
06-02-2008, 21:54
Зачем С++? Встроенный VBA прекрасно справится!

darel
06-02-2008, 22:29
О, спасибо, то что нужно

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

Alexej77
07-02-2008, 21:44
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
Написать функцию, которая определяет цвет ячейки. »
Написать в Excel'e или в скрипте?!

Alexej77
08-02-2008, 20:00
Drongo, на VBA. Собственно, я ее уже написал.

Drongo
09-02-2008, 17:51
Drongo, на VBA. Собственно, я ее уже написал. »
Да? А как же тогда её подключить?! Я только простейшие макросы записать могу, ну типа, высчитать в каких то ячейках и листах. Как вашу функцию подключить?!

Alexej77
10-02-2008, 00:05
Drongo, очень просто. Там, где ты пишешь простейшие макросы »там же пишешь вышеприведенную функцию. Теперь ее можешь использовать в этой книге, например, так=cellcolor(A1)

Drongo
10-02-2008, 13:17
Спасибо, решено!




© OSzone.net 2001-2012