Срочно нужен хелп по Экселю!

Программирование на Visual Basic for Applications
Alex_dalt
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 11.02.2004 (Ср) 16:57

Срочно нужен хелп по Экселю!

Сообщение Alex_dalt » 11.02.2004 (Ср) 17:19

Люди! Помогите..
Босс казал чтобы я сделал такую тему -
A B C
1 | шт |
2 треугольник | 1 | [Здесь нужна формула которая бы делала след.перацию -> (*)]
3 квадрат | |
4 куб | |
5 ромб | |


6 Итог что выбрано: Треугольник


(*)
Исли напротив товара появляется единица или больше, то в A6 прописывалась фигура которая была выбрана. Будет выбираться только ОДНА фигура..
У меня загвоздка на формуле - практически всё работает, только надо сделать присваивание..
Вот как думал я -

=ЕСЛИ(B2>0;A6=A2;"-")
То есть если Шт>0, то А6 присваивалась бы А2.
НО ЗНАК "=" - ЛОГИЧЕСКИЙ И НИЧЕГО НЕ ПАШЕТ!
Народ, кто знает как надо записать, чтобы было присваивание (знак присваивания), а не логическая операция..


А сейчас смотрю, и понимаю что без макроса не обойтись... А я не знаю его вооще..

ПЛИИИЗ ХЕЛП.

SergeySV
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 124
Зарегистрирован: 17.04.2003 (Чт) 14:39
Откуда: Россия, Москва

Re: Срочно нужен хелп по Экселю!

Сообщение SergeySV » 11.02.2004 (Ср) 17:41

Alex_dalt писал(а):=ЕСЛИ(B2>0;A6=A2;"-")
То есть если Шт>0, то А6 присваивалась бы А2.
НО ЗНАК "=" - ЛОГИЧЕСКИЙ И НИЧЕГО НЕ ПАШЕТ!
Народ, кто знает как надо записать, чтобы было присваивание (знак присваивания), а не логическая операция..
ПЛИИИЗ ХЕЛП.


Ты не понял как работает встроенная функция ЕСЛИ.
У нее 3 аргумента:
1. Логическое сравнение, у тебя - B2>0
2. Результат который присвоится если сравние ПРАВДА. тут может быть число, адрес другой ячейки или другая формула
3. Результат который присвоится если сравние ЛОЖЬ. тут может быть число, адрес другой ячейки или другая формула

Теперь самое интересное, где кроется твое непонимание. Кому присвоится результат(правдивый или лживое это уже от сравнения зависит)???
Да именно той ячейке, в которой забита вся эта формула. ВОТ.

НЕЛЬЗЯ в этой функции указать чтобы он присвоила правдивое значение одной ячейки, а лживое значение другой. Ты тут в своих размышлениях принял желаемое за действительное.

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

Например мы сравниваем ячейку B2 с нулем и хотим, чтобы если B2>0 то С1 было написано "круто", а если наоборот (B2<=0), то в С2 было написано "некруто".
То тогда придется в в этих двух ячейках С1 и С2 писать по формуле

В С1:
=ЕСЛИ(B2>0;"круто";"")

В С2:
=ЕСЛИ(B2<=0;"некруто";"")

Вот так, придется попотеть. А если вариантов ответов больше двух, тогда увеличится сама формула и еще в каждой надо будет забить формулу со своим непересекающимся условием - т.е. потеть придется еще больше.
Тут помочь может токо макрос на VB, из который ты может писать скоко хочешь и во скоко ячеек хочешь, полная свобода и все в одном месте.
Главное двигаться не быстрее, чем думает твоя голова.

Alex_dalt
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 11.02.2004 (Ср) 16:57

Сообщение Alex_dalt » 11.02.2004 (Ср) 17:52

Немного не то..
Суть такая что ложь, и истина здесь играет роль другую.
При положительном результате - происходило присваивание..
В итог записывается значение целки напротив которой будет забито число.
Кстати причём здесь С1 и С2. В С2 там уже совсем другой объект...

Alex_dalt
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 11.02.2004 (Ср) 16:57

Сообщение Alex_dalt » 11.02.2004 (Ср) 18:46

Всё.
Нашёл.
-
=ИНДЕКС(C6:C300;ПОИСКПОЗ(1;D6:D300;-1);1)
И всё пучком.
Спасибо за участие


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 83

    TopList