Как построить алгоритм для Excel?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Денис Басов
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 28.02.2006 (Вт) 11:35
Откуда: Москва

Как построить алгоритм для Excel?

Сообщение Денис Басов » 28.02.2006 (Вт) 12:04

Уважаемые программисты.
Я раньше не занимался программированием, что сейчас негативно отражается на моей деятельности.
В связи с моей магистерской диссертацией мне необходимо построить алгоритм (т.е. подробно расписать его) с помощью VB (поскольку Excel такое не потянет), который поможет расчитать формулу при выборе чисел из массива данных.
ФОРМУЛА: (18-(3+4))/(18-(2+1)).
В Excel есть строка, состоящая из 8 ячеек. Каждой ячейке должен быть присвоен порядковый номер.
Существует отдельный ряд чисел от 0 до 7. Эти числа в свободном порядке (который мы не можем расчитать зараннее) попадают в эти восемь ячеек.
В приведенной выше формуле числа 3, 4, 1, 2 - это числа из отдельного ряда (который от 0 до 7). Когда мы ставим эти числа в восемь ячеек в разном порядке, то вместо 3, 4, 2, 1 в формулу должны попадать порядковые номера ячеек (как самостоятельные числа), в которых эти числа находятся.
Пример: если число 3 стоит в ячейке с порядковым номером 7, то в формуле это должно отражаться так - (18-(7+4))/(18-(2+1)). И так должно быть с каждым из этих однозначных чисел в формуле.
Ответ по результатам этой формулы должен попадать в девятую порядковую клеточку строки со свободными числами (которые от 0 до 7).
Уважаемые программисты! Прошу Вас помочь неопытному товарищу и может быть в далеком будущем Вашему коллеге в этом пока нелегком для меня деле. С уважением, Денис.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 28.02.2006 (Вт) 12:16

Во-первых переписываем формулу так:
Result = (18 - (I3 + I4)/(18 - (I2 - I1))

где I1, I2, I3 и I4 - индексы ячеек в которых находятся соответсвенно числа 1, 2, 3 и 4

А дальше все просто. В четырех циклах делаем проход по ячейкам от первой до восьмой и ищем в них последовательно числа 1, 2, 3 и 4. Найденный индекс присваиваем переменным I1, I2, I3 и I4 и вычисляем результат.

И напоследок вопрос: в этих ячейках всегда есть числа от 0 до 7, но в произвольном порядке или есть какие-либо нюансы?
Весь мир матрица, а мы в нем потоки байтов!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Re: Как построить алгоритм для Excel?

Сообщение GSerg » 28.02.2006 (Вт) 12:26

Денис Басов писал(а):поскольку Excel такое не потянет

Excel потянет и не такое...

A1:H1 - числа от 1 до 8.
A2:H2 - для введения чисел.
I2: =(18-(ПОИСКПОЗ(3;$A$2:$H$2;0)+ПОИСКПОЗ(4;$A$2:$H$2;0)))/(18-(ПОИСКПОЗ(2;$A$2:$H$2;0)+ПОИСКПОЗ(1;$A$2:$H$2;0)))
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Денис Басов
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 28.02.2006 (Вт) 11:35
Откуда: Москва

Сообщение Денис Басов » 28.02.2006 (Вт) 12:31

В психологии существует известный цветовой тест - тест Люшера.
В тесте Люшера (по крайней мере в том, с которым работаю я) восеь цветов. Каждому цвету присвоен номер. Тестируемый выбирает цвета в том порядке (по убыванию), в котором они ему нравятся (наиболее приятны в данный момент). В соответствии с местом расположения этих цветов в выбранном ряду, их порядковые номера попадают в формулу.
В каждом выборе каждого тестируемого порядок цветов может быть разный, но номера этих цветов всегда одинаковы.
А по поводу подставления формулы... Я сейчас на 66 странице учебника по VB для начинающих и пока не совсем представляют, куда эту формулу нужно подставить. Но в любом случае, любая информация будет полезна!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 28.02.2006 (Вт) 12:36

Не знаю, что и сказать :roll:

Ну на.
Вложения
Книга1.zip
(1.85 Кб) Скачиваний: 53
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Денис Басов
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 28.02.2006 (Вт) 11:35
Откуда: Москва

Сообщение Денис Басов » 28.02.2006 (Вт) 12:46

Большое спасибо, Шаман!
Решение оказалось действительно известно всем кроме меня!
Теперь попробую вытащить алгоритм написания этого макроса (т.е. как, где и на что ссылаться в его написании) и покажу его своему научному руководителю.
Буду очень благодарен, если мы сможем общаться не только на форуме но и по имейлу. denis750@yandex.ru
С уважением, Денис.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 28.02.2006 (Вт) 12:48

Внимание, вопрос...

Зачем в данном случае макрос?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Денис Басов
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 28.02.2006 (Вт) 11:35
Откуда: Москва

Сообщение Денис Басов » 28.02.2006 (Вт) 12:53

Только что разобрался. Макрос не при чем. Это я завис.
Еще раз огромное спасибо!

Денис Басов
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 28.02.2006 (Вт) 11:35
Откуда: Москва

Сообщение Денис Басов » 14.03.2006 (Вт) 10:16

Уважаемые программисты! Опять обращаюсь за советом!
Я перерыл все функции Excel но не смог найти нужной. А искал я следующее:
Если у меня есть столбец из 25 строк, в которые я забиваю разные числа, то чтобы высчитать среднее арифметическое значение, я в свободную клетку ввожу формулу по вычислению среднего значения и в эту формулу вставляю диапазон строк с 1й по 25ю. Но дело в том, что я не всегда заполняю все 25 строк, и в результате при вычислении среднего происходит деление на ноль и в клетке среднего значения выдается ошибка (возникающая при делении на ноль).
Как сделать так, чтобы эта формула учитывала только те строки (ячейки) в столбце, в которые введены числа, и не считала те ячейки, в которых чисел нет?

А еще я пытался, например, найти функцию, чтобы в строке (например из 10 ячеек) находить три ячейки с максимальными значениями, и чтобы Excel выделял их другим цветом (и как при этом выбрать цвет?).

Что делать???

$€rg
Обычный пользователь
Обычный пользователь
 
Сообщения: 99
Зарегистрирован: 11.01.2006 (Ср) 10:15
Откуда: Санкт-Петербург

Сообщение $€rg » 14.03.2006 (Вт) 10:45

в ячейку А26 вставляю =СРЗНАЧ(A1:A25) все считается нормально из ячеек а1-а25 (если все ячейки пустые в а26 #ДЕЛ/0! )

Денис Басов
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 28.02.2006 (Вт) 11:35
Откуда: Москва

Сообщение Денис Басов » 18.03.2006 (Сб) 16:00

Как вывести среднее из столбика ячеек (25 строк)?
Тонкость в том, что эти ячейки (из которых мне нужно вывести среднее число) содержат в себе формулу, которая выводит среднее число из других ячеек. И если в одной из ячеек (из которой мне в итоге нужно вывести среднее число) имеется значение "ошибка деления на ноль), то при расчете среднего из столбца, где есть такая ячейка, получается точно такой же результат - ошибка деления на ноль.
Необходимо сделать так, чтобы ячейки с "ошибкой деления на ноль" не учитывались в расчете средней формулы в том случае, если они вдруг будут содержать такую ошибку.
Как быть?Я идиот! Убейте меня, кто-нибудь!???

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 18.03.2006 (Сб) 16:21

Добавить дополнительный ЕСЛИ.
Скажем, есть формула в ячейке A1:
Код: Выделить всё
=B1/C1


Модифицируем ее:
Код: Выделить всё
=ЕСЛИ(C1<>0;B1/C1;0)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 18.03.2006 (Сб) 16:26

Вариант №2.

Конечная формула =СРЗНАЧ(ЕСЛИ(ЕОШИБКА(C1:C25);"";C1:C25))
При вводе нажать Ctrl+Shift+Enter.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Денис Басов
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 28.02.2006 (Вт) 11:35
Откуда: Москва

Сообщение Денис Басов » 18.03.2006 (Сб) 16:37

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

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 18.03.2006 (Сб) 16:47

Открыть файл.
Прищурив левый глаз, послать файл в и на.
Закрыть файл.


Примерный результат:
Вложения
Книга.zip
(2.02 Кб) Скачиваний: 33
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Денис Басов
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 28.02.2006 (Вт) 11:35
Откуда: Москва

Сообщение Денис Басов » 18.03.2006 (Сб) 16:56

Собственно говоря это я хотел выслать файл, чтобы показать, чего это я там намудрил.
Но большое спасибо за Ваш файл!
Если в будущем я буду высылать примеры, по которым я должен строить формулы, как файлы Excel загружать (посылать) на этот форум?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 18.03.2006 (Сб) 17:02

Путём нажатия кнопки Изображение
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Денис Басов
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 28.02.2006 (Вт) 11:35
Откуда: Москва

Сообщение Денис Басов » 23.03.2006 (Чт) 13:22

Возможно ли в Excel сделать так, чтобы одни цифры заменялись на другие?
Пример: в ячейку попадает число от 1 до 100. Существуют градации чисел, в соответствии с которыми одно число (например в диапазоне от 45 до 57) должно заменяться на другок число (например 5). Какую команду можно выбрать, чтобы сделать это?


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: Yandex-бот и гости: 39

    TopList