Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/19: Рейтинг темы: голосов - 19, средняя оценка - 4.53
3 / 3 / 1
Регистрация: 28.12.2011
Сообщений: 25

Вычислить среднее геометрическое по данным выделенной таблицы

12.06.2012, 11:38. Показов 4041. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе время суток! Помогите пожалуйста кто чем сможет! сделать макросы в excel :

1) Вычислить среднее геометрическое по данным выделенной таблицы.

я тут набросал чтоб он брал данные из выделенной таблицы а как дальше быть незнаю, как сделать чтобы вычеслял среднее геометрическое и выводил его в ячеку?
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Dim Mass() As Variant
Dim i As Integer
Dim j As Integer
Dim X As Integer
Dim Y As Integer
Dim H As Integer
Dim W As Integer
X = Selection.Row
Y = Selection.Column
H = Selection.Rows.Count
W = Selection.Columns.Count
ReDim Mass(H, W)
For i = 1 To H
    For j = 1 To W
        Mass(i, j) = Cells(X + i, Y + j - 1)  
    Next j
Next i
...

2) Поле шахматной доски определяется парой натуральных чисел, первое из которых задает номер вертикали, а второе – номер горизонтали. Даны натуральные числа k, l, m, n. Требуется выяснить, являются ли поля (k, l) (m, n) полями одного цвета.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.06.2012, 11:38
Ответы с готовыми решениями:

Получить доступ к данным выделенной строки таблицы listView
Создаю таблицу в listView следующим образом: DataTable table = new DataTable(); //заполнение таблицы данными table =...

Вычислить среднее геометрическое и среднее арифметическое значения положительных элементов массива
Помогите пожалуйста. До 24 мая и до 14:00 надо сделать программу, всю голову изломал уже ничего не получается... В заданном массиве А...

Вычислить среднее арифметическое и среднее геометрическое нечетных чисел, кратных 7 в диапазоне от M1 до M2
Вычислить среднее арифметическое и среднее геометрическое нечетных чисел, кратных 7 в диапазоне от M1 до M2

12
призрак
 Аватар для ikki
3266 / 894 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
12.06.2012, 13:07
код не совсем правильный.
Visual Basic
1
option base 1
я не вижу. значит - по умолчанию каждая размерность массива индексируется с 0.
циклы вылетят с ошибкой "out of range"
да и
Visual Basic
1
Cells(X + i, Y + j - 1)
- тоже неправильно. по строке надо тоже отнимать единичку.

раз уж у вас массив Variant, то проще писать так:
Visual Basic
1
2
dim mass()
mass=selection.value
среднее геометрическое - это корень n-й степени из произведения. в чём проблема?

по второй задаче - попробуйте сложить номер горизонтали и номер вертикали для разных клеточек доски и увидеть закономерность.
1
3 / 3 / 1
Регистрация: 28.12.2011
Сообщений: 25
12.06.2012, 13:49  [ТС]
это да, забыл выделить)
Visual Basic
1
option base 1
проморгал)
Visual Basic
1
Mass(i, j) = Cells(X + i - 1, Y + j - 1)
а что это значит? mass = Selection.Value
Visual Basic
1
2
3
4
5
Sub Макрос()
Dim mass()
mass = Selection.Value
Dim i As Integer
Dim j As Integer
тут дальше нужно вычеслить среднее геометрическое и как то вывести результат, я вообще непредставляю как это можно сделать, помоги пжл, вроде как ещё одну переменную придётся создавать?
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Option Base 1
Sub Макрос()
Dim mass()
mass = Selection.Value
Dim i As Integer
Dim j As Integer
Dim X As Integer
Dim Y As Integer
Dim H As Integer
Dim W As Integer
X = Selection.Row
Y = Selection.Column
H = Selection.Rows.Count
W = Selection.Columns.Count
ReDim mass(H, W)
For i = 1 To H
    For j = 1 To W
        mass(i, j) = Cells(X + i - 1, Y + j - 1)       
    Next j
Next i
...
0
призрак
 Аватар для ikki
3266 / 894 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
12.06.2012, 14:05
Visual Basic
1
mass = Selection.Value
это как раз заполнение двумерного массива типа Variant значениями из выделенного диапазона.
правда, если выделенный диапазон будет несмежным, то тут возникнет ошибка.
но это - крайний случай.
как я понял, мы предполагаем, что юзер находится в здравом уме и выделяет на листе прямоугольный диапазон ячеек с числами?

для классического алгоритма переменная, конечно, нужна:
Visual Basic
1
2
3
4
5
6
7
8
9
dim p#
p=1
for i=1 to ubound(mass,1)
  for j=1 to ubound(mass,2)
    p = p * mass(i,j)
next j, i
msgbox p^(1/(ubound(mass,1)*ubound(mass,1)))
selection.cells(1).offset(0,ubound(mass,2)+1).value= _
p^(1/(ubound(mass,1)*ubound(mass,1)))
1
3 / 3 / 1
Регистрация: 28.12.2011
Сообщений: 25
12.06.2012, 14:33  [ТС]
[Оверквотинг. Не цитируйте посты ЦЕЛИКОМ!]

полный код так получаеться?:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
option Base 1
Sub Макрос()
 
Dim mass()
mass = Selection.Value
Dim p#
p = 1
For i = 1 To UBound(mass, 1)
  For j = 1 To UBound(mass, 2)
    p = p * mass(i, j)
Next j, i
MsgBox p ^ (1 / (UBound(mass, 1) * UBound(mass, 1)))
Selection.Cells(1).Offset(0, UBound(mass, 2) + 1).Value = _
p ^ (1 / (UBound(mass, 1) * UBound(mass, 1)))
End Sub
если да, то он что-то не то считает я выделил(к примеру):
6 5 2
6 7 2
он выдаёт 8,425731
а если сделаю проверку с помощью СРГЕОМ(...)
то он покажет 4,140681
странно... может я что-то не так вставил?
0
призрак
 Аватар для ikki
3266 / 894 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
12.06.2012, 14:55
прошу меня извинить, у меня в коде ошибка (из-за копипаста)
должно быть так:
Visual Basic
13
MsgBox p ^ (1 / (UBound(mass, 1) * UBound(mass, 2)))
ну и 15-я строка - аналогично.
все остальное - да, правильно.
1
3 / 3 / 1
Регистрация: 28.12.2011
Сообщений: 25
12.06.2012, 15:15  [ТС]
СПАСИБО БОЛЬШУЩЕЕ!!! ВСЁ РАБОТАЕТ)!!!

2)Поле шахматной доски определяется парой натуральных чисел, первое из которых задает номер вертикали, а второе – номер горизонтали. Даны натуральные числа k, l, m, n. Требуется выяснить, являются ли поля (k, l) (m, n) полями одного цвета.

на счёт второй как понял, можно же сделать так что бы k m l n переменные он брал произвольно не выделяя ячейки или лучше выделять? не могу понять как можно тогда вбить их в код чтобы он понял что например ячейка A1 это k, B1 это m, С1 это l, D1 это n, условие же будет такое?
если удовлетворяет то да они одного цвета, если нет то разного
((k And 1) = (m And 1)) AndAlso ((l And 1) = (n And 1))
0
призрак
 Аватар для ikki
3266 / 894 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
12.06.2012, 15:22
а зачем вам вообще ячейки для второй задачи?
у вас даны координаты двух клеток - числами. можно ввести через InputBox.
высчитывайте в макросе цвет одной клетки и цвет другой.
сравнивайте.
выдавайте результат-сообщение.
1
3 / 3 / 1
Регистрация: 28.12.2011
Сообщений: 25
12.06.2012, 15:30  [ТС]
а как вычислить цвет одной и другой клетки?
0
призрак
 Аватар для ikki
3266 / 894 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
12.06.2012, 15:37
уже писал:
Цитата Сообщение от ikki Посмотреть сообщение
по второй задаче - попробуйте сложить номер горизонтали и номер вертикали для разных клеточек доски и увидеть закономерность.
DJONII, Вы, возможно, заметили - у меня свои "тараканы" - я человеку, отказывающемуся думать, помогать не люблю.
но форум большой, просто праздники, наверное, поэтому затишье.
если просто хотите готовый код - подождите других форумчан.
1
3 / 3 / 1
Регистрация: 28.12.2011
Сообщений: 25
12.06.2012, 16:13  [ТС]
написал только где то ошибка, немогу понять где...
как мне кажется где-то в условии...

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Sub Макрос()
Dim k As Integer, l As Integer, m As Integer, n As Integer
k = InputBox("Введите k, координату первой ячейки по горизонтали", "Окно ввода")
l = InputBox("Введите l, координату первой ячейки по вертикали", "Окно ввода")
m = InputBox("Введите m, координату второй ячейки по горизонтали", "Окно ввода")
n = InputBox("Введите n, координату второй ячейки по вертикали", "Окно ввода")
If ((k + n) = (m + l)) Then
MsgBox ("Цвета ячеек одинаковы")
Else
MsgBox ("Цвета ячеек разные")
End If
End Sub
0
 Аватар для Апострофф
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
13.06.2012, 07:36
Visual Basic
1
msgbox iif (((k+l)and 1)=((m+n)and 1), "Поля одного цвета","Поля разных цветов")
1
3 / 3 / 1
Регистрация: 28.12.2011
Сообщений: 25
13.06.2012, 10:43  [ТС]
Спасибо за помощь!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.06.2012, 10:43
Помогаю со студенческими работами здесь

Вычислить среднее арифметическое и среднее геометрическое положительных элементов массива
В данном массиве А{n} вычислить среднее арифметическое и среднее геометрическое положительных элементов

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

Вычислить среднее арифметическое и среднее геометрическое модулей заданных чисел
Всем привет. Условие: Заданы 4 числа. Вычислить среднее арифметическое и среднее геометрическое модулей. Исходные данные a,b,c,d. ...

Вычислить среднее арифметическое и среднее геометрическое чисел а,b и с и определить какое из средних больше
Вычеслить среднее арифметическое и среднее геометрическое чмсел а,b и с и определить какое из средних больше.

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru