Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 1
Регистрация: 31.10.2017
Сообщений: 10
1

Сумма последней строки и последнего столбца VBA excel

14.12.2017, 16:24. Показов 1851. Ответов 15

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Public Function S(C As Variant) As Integer
Dim n, i, s1, s2 As Integer
Dim R() As Variant
n = C.Columns.Count
ReDim R(1 To n, 1 To n)
s1 = 0
s2 = 0
For i = 1 To n
 
s1 = s1 + R(n, i)
Next
For i = 1 To n
 
s2 = s2 + R(i, n)
Next
S = s1 + s2
 
End Function
Из матрицы указанной в диапазоне необходимо посчитать сумму последней строки и последнего столбца.
Программу я сделал, и вроде не лишенную логики, но все равно не получается. Выводит ошибку. В VBA Я не силён, поэтому прошу вашей поддержки!)
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.12.2017, 16:24
Ответы с готовыми решениями:

SQL: поиск последней строки, последнего столбца
Добрый день. Подскажите, есть в SQL команды по поиску последней строки, столбца, в которых есть...

Найти сумму последней строки и последнего столбца матрицы.
Двум массив , если можно с объяснением строк :C Дан двумерный массив , заполненный случайным...

Получить значение последней записи ячейки определённого столбца VBA Excel
Приветствую форумчани подскажите кто может как получить последнюю записть определёного столбца q...

Заменить все элементы последнего столбца суммой элементов последней строки матрицы
1) дана матрица целых чисел размером 4х4.Заменить все элементы последнего столбца суммой элементов...

15
oh my god
1447 / 786 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
14.12.2017, 16:44 2
Вижу что ты не ведаешь что такое размерность ubound

пример:
For i = 1 To Ubound(array)

Добавлено через 1 минуту
msgbox "Ответ: " & array(Ubound(array) )

Добавлено через 13 минут
1
0 / 0 / 1
Регистрация: 31.10.2017
Сообщений: 10
14.12.2017, 17:00  [ТС] 3
Как этим пользоваться?
Visual Basic
1
2
3
4
5
6
7
8
For i = 1 To UBound(R)
 
s1 = s1 + R(n, i)
Next
For i = 1 To UBound(R)
 
s2 = s2 + R(i, n)
Next
Это будет выглядеть так? Я слабо понимаю
И как это связать с двумерным массивом?(
0
11254 / 3618 / 645
Регистрация: 13.02.2009
Сообщений: 10,793
14.12.2017, 17:16 4
помнится в детской фантастике роботы ругались: четыре нуля умножить на четыре нуля и ещё раз на четыре нуля.
А ты нули складываешь!
размер массива-то ты переназначил, но он пуст!
наверное его надо считать с листа или передавать в функцию готовый массив
Выводит ошибку.
Так проще же! Бейсик сам подсказывает! читай что он пишет и устраняй

Добавлено через 1 минуту
Из матрицы указанной в диапазоне
А где ты указываешь диапазон?
0
0 / 0 / 1
Регистрация: 31.10.2017
Сообщений: 10
14.12.2017, 17:43  [ТС] 5
Цитата Сообщение от Alex77755 Посмотреть сообщение
читай что он пишет и устраняй
Сам VBA ничего не пишет, а пишет Excel "#ИМЯ?"
Цитата Сообщение от Alex77755 Посмотреть сообщение
А где ты указываешь диапазон?
передаю его выделением ячеек в excel'е
Visual Basic
1
2
3
Dim R() As Variant
n = C.Columns.Count
ReDim R(1 To n, 1 To n)
Как я считал это задает массив указанного мной диапазона
0
Заблокирован
14.12.2017, 18:35 6
Visual Basic
1
2
3
Public Function S(C As Range) As Double
S = WorksheetFunction.Sum(C.Columns(C.Columns.Count)) + WorksheetFunction.Sum(C.Rows(C.Rows.Count))
End Function
1
11254 / 3618 / 645
Регистрация: 13.02.2009
Сообщений: 10,793
14.12.2017, 18:47 7
передаю его выделением ячеек в excel'е
тогда будет ка-то так
Visual Basic
1
2
3
4
Sub qwer()
    Dim R
    R = Selection.Value
End Sub
в R будет массив выделенного диапазона. Вот его и надо передавать в функцию
И уже в самой функции определять размерность массива
1
0 / 0 / 1
Регистрация: 31.10.2017
Сообщений: 10
14.12.2017, 21:04  [ТС] 8
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Public Function S(C As Variant) As Integer
Dim R
R = C.Value
Dim s1
Dim s2
s1 = 0
s2 = 0
For i = 1 To R.Columns.Count
s1 = s1 + R(i, R.Rows.Count)
Next
For i = 1 To R.Rows.Count
s2 = s2 + R(R.Columns.Count, i)
Next
S = s1 + s2
End Function
Вот так должно было получиться?
Но в Экселе он все равно пишет "#ИМЯ?"
0
Заблокирован
14.12.2017, 21:17 9
FobasMaxus, чем не устроило моё решение?
0
0 / 0 / 1
Регистрация: 31.10.2017
Сообщений: 10
14.12.2017, 22:23  [ТС] 10
Оно мне понравилось своей компактностью, но оно не работает почему-то (
0
Заблокирован
14.12.2017, 22:32 11
FobasMaxus, смотри внимательно - что я делаю не так и почему у меня работает?
Миниатюры
Сумма последней строки и последнего столбца VBA excel  
2
11254 / 3618 / 645
Регистрация: 13.02.2009
Сообщений: 10,793
14.12.2017, 23:43 12
Лучший ответ Сообщение было отмечено FobasMaxus как решение

Решение

разве бейсик не показал ошибку? Что такое у тебя R? С какого перепугу у него будут свойства Range???
To R.Columns.Count
Добавлено через 3 минуты
C As Variant
что передаёшь в функцию?
Короче! раз оно тебе не надо, то мне и подавно!
умываю руки!

Добавлено через 6 минут
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub qwer()
    Dim R
    R = Selection.Value
    MsgBox S(R)
End Sub
 
 
Public Function S(C) As Integer
    Dim i, s1, s2
 
    For i = 1 To UBound(C)
        s1 = s1 + C(i, UBound(C, 2))
    Next
    
    For i = 1 To UBound(C, 2)
        s2 = s2 + C(UBound(C), i)
    Next
    S = s1 + s2
End Function
Добавлено через 2 минуты
функция Остап Бонд
Visual Basic
1
2
3
4
5
6
7
8
9
Sub qwerty()
    Dim R As Range
    Set R = Selection
    MsgBox S(R)
End Sub
 
Public Function S(C As Range) As Double
    S = WorksheetFunction.Sum(C.Columns(C.Columns.Count)) + WorksheetFunction.Sum(C.Rows(C.Rows.Count))
End Function
1
oh my god
1447 / 786 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
14.12.2017, 23:52 13
Цитата Сообщение от Alex77755 Посмотреть сообщение
Короче! раз оно тебе не надо, то мне и подавно!
Вы далеко не уходите, вы уйдете, softice уйдет, я уйду, и кто тут останется ?
Почемуто я сомневаюсь что из этой молодежи выведется хоть ктонибудь равный Вам
0
0 / 0 / 1
Регистрация: 31.10.2017
Сообщений: 10
15.12.2017, 07:00  [ТС] 14
Я и сам логически понимаю, что это должно работать, но ничего не могу поделать с этим "#ИМЯ?"
Может я что-то делаю не так? Извините за мою тупость, это у меня с рождения
Миниатюры
Сумма последней строки и последнего столбца VBA excel  
0
Заблокирован
15.12.2017, 08:51 15
FobasMaxus, штоли реально не видите разницы между этим
Visual Basic
1
2
3
Public Function S(C As Range) As Double
    S = WorksheetFunction.Sum(C.Columns(C.Columns.Count)) + WorksheetFunction.Sum(C.Rows(C.Rows.Count))
End Function
и этим
Visual Basic
1
2
3
Public Function Summi(C As Range) As Double
    S = WorksheetFunction.Sum(C.Columns(C.Columns.Count)) + WorksheetFunction.Sum(C.Rows(C.Rows.Count))
End Function
?
Function возвращает значение СВОИМ ИМЕНЕМ!

Добавлено через 24 минуты
Хотя по идее ругнуться должен сначала VB на необъявленную S при наличии Option Explicit или функция просто вернула бы 0.
Прикладывайте файл, хватит в гадалок играть...
0
0 / 0 / 1
Регистрация: 31.10.2017
Сообщений: 10
15.12.2017, 19:15  [ТС] 16
Нет, нет, я прекрасно вижу эту ошибку, просто я попробовал переименовать функцию, считая, что имя S уже забито.
В итоге, с моим excel какая то беда. Он начал писать ошибку #ссылка. Хотя у друга ваша функция прекрасно работала. Видимо беда в самом экселе
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.12.2017, 19:15

Найти среднее арифметическое значений элементов матрицы и заме- нить этим значением элементы последней строки и последнего столбца.
Вобщем задание такое: Найти среднее арифметическое значений элементов матрицы и заме- нить этим...

Вычислить сумму элементов матрицы первого столбца, последнего столбца, первой строчки и последней строчки
Вычислить сумму элементов матрицы в области, оьозначенной Х ХХХХХХХХХХХ Х .............. Х Х...

VBA Excel: Найти наименьший по модулю элемент. Получить квадратную матрицу из исходной путем выбрасывания строки и столбца с этим элементом
Задачу делала по очень похожему примеру с форума, но почему то у меня полностью удаляет матрицу,...

Вывести «ДА» , если сумма элементов первого столбца совпадает с суммой элементов последнего столбца
2)Заполнить двумерный массив 4 на 3 с клавиатуры. Вывести «ДА» , если сумма элементов первого...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.