0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 7
1

Каким должен быть формат ячеек, чтобы было сложение чисел, а не строк

19.10.2012, 09:48. Показов 2945. Ответов 6
Метки нет (Все метки)

Привет!

У меня есть таблица 240х180, я хочу усреднить значения в каждых четырех клетках, чтобы получить 120х90. Для начала пишу макрос, который усредняет в одном направлении (по горизонтали), потом туда же надо приписать то же самое по вертикали и итоговое, это всё понятно. Но возникает три проблемы. Так как с VBA я не дружу, то проблемы, наверное, идиотские

1. Первая строка (если цикл идёт сначала по строкам, а потом по столбцам) или первый столбец (если сначала по столбцам) - не складывает данные, а пишет непосредственно "значение ячейки1+значение ячейки2", видимо, проблема с форматом? Как исправить и почему с остальными все нормально?
2. Почему просуммировать две ячейки вот таким образом можно, а сделать среднее (то есть поделить пополам) нельзя? Когда я приписываю туда деление, пишут Type mismatch
Visual Basic
1
Sheets("List1").Cells(k, i).Value = Sheets("List0").Cells(k, j).Value + Sheets("List0").Cells(k, j + 1).Value
3. Макрос досчитывает до определенной ячейки, а дальше вылетает с ошибкой Application-defined or object-defined error. При этом данные все в исходной таблице в одинаковом формате. Почему так?

Таблица с макросом (называется Average) во вложении.
Вложения
Тип файла: rar GFED3.1_199701_BC.rar (57.7 Кб, 16 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.10.2012, 09:48
Ответы с готовыми решениями:

Определить, каким должен быть радиус диска, чтобы он имел массу m
Из материала с плотностью p изготовлен диск,толщиной h.Каким должен быть радиус диска,чтобы он...

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

Каким должен быть план, чтобы древесины хватило на 100 лет работы
Леспромхоз ведет промышленную заготовку древесины. Ежегодный план составляет N м3. За год лес...

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

6
Заблокирован
19.10.2012, 10:13 2
Sovsem_ne_Ta, Данные в Вашей исходной таблице имеют строковый тип,
который надо преобразовывать в числовой
(а т.к. разделитель точка, то лучше взять Val(Sheets("List0").Cells(k, j).Value)) и т.д.

И какой смысл усреднять нули
0
0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 7
19.10.2012, 10:15  [ТС] 3
А как их тогда преобразовать? Там в том же файле есть макрос Format, который должен же был переделать их в обычный из строкового?

Усреднять нули большой смысл, потому что в таблице не только нули.
0
Заблокирован
19.10.2012, 10:25 4
Не разглядел
Пробуйте
Visual Basic
1
2
3
4
5
6
7
8
9
10
Sub Average()
Dim r0 As Range, r1 As Range, r As Long, c As Long
Set r0 = Worksheets("List0").Cells
Set r1 = Worksheets("List1").Cells
For r = 1 To 90
  For c = 1 To 120
    r1(r, c) = (Val(r0(r * 2 - 1, c * 2 - 1)) + Val(r0(r * 2, c * 2 - 1)) + Val(r0(r * 2 - 1, c * 2)) + Val(r0(r * 2, c * 2))) / 4
  Next c
Next r
End Sub
1
15135 / 6409 / 1730
Регистрация: 24.09.2011
Сообщений: 9,999
19.10.2012, 10:33 5
XLSM посмотреть не могу. Можно формулой сделать. В файле 2 варианта: с обычной формулой и с "массивной" сразу на весь диапазон.
Вложения
Тип файла: xls Усреднение.xls (21.0 Кб, 10 просмотров)
0
0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 7
19.10.2012, 12:03  [ТС] 6
Апострофф, о, спасибо, прекрасно! Не знала о существовании Val.

 Комментарий модератора 
Один вопрос - одна тема!
Перенес сюда: Как изменить макрос, чтобы он сохранял книгу без подтверждения
0
5468 / 1148 / 50
Регистрация: 15.09.2012
Сообщений: 3,514
19.10.2012, 12:13 7
Хоть задача уже решена, я отвечу на вопросы, которые есть в сообщении #1.
  1. В России дробные числа пишутся с запятой: 0,1. Поэтому если в ячейке находится дробное число с точкой, то VBA воспринимает это как текст, а не как число.
    Что можно сделать, чтобы работать с дробными числами, у которых точка:
    • Можно сделать так, чтобы Excel воспринимал дробные числа с точкой, как числа, но такое изменение каснётся всех книг, с которыми будут работать на данном компьютере:
      • в Excel 2007: Круглая кнопка - Параметры Excel - Дополнительно - Параметры правки - флажок "Ипользовать системные разделители";
      • в Excel 2010: Файл - Параметры - Дополнительно - Параметры правки - флажок "Ипользовать системные разделители";
    • Можно использовать средства VBA, а именно функцию Val. Эта функция превращает текст в число.
  2. В VBA знак "+" можно использовать в двух случаях: для сложения чисел и для объединения нескольких фрагментов текста в один фрагмент. Если компьютер понимает, что перед ним числа, то он их складывает, а если компьютер видит, что перед ним текст, то объединяет текст в один фрагмент, например, если в ячейках Excel:
    0,1 + 0,1 = 0,2
    0.1 + 0.1 = 0.10.1
    Знак деления "/" относится только к числам, поэтому, когда вы пытаетесь использовать знак деления с текстом, то возникает ошибка, что несовпадение типов данных.
  3. В определённый момент в результате работы вашего кода переменная "j" будет больше, чем количество столбцов на листе.
    Ошибка "Application-defined or object-defined error" означает, что нет такой ячейки на листе.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.10.2012, 12:13
Помогаю со студенческими работами здесь

С какой матрицей должен быть проектор чтобы можно было различить текст 14 шрифтом?
Хочу купить видеопроектор. С какой матрицей должен быть проектор чтобы без проблем было видно текст?

Каким должен быть угол уклона, чтобы автомобиль на холостом ходу двигался вниз равномерно?
Я так понимаю что в моём случае равномерное движение будет получено при равенстве двух движущих сил...

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

Что должен уметь настоящий мужчина? Или каким он должен быть?
Девушки, вы часто задаетесь этим вопросом, и обычно ваши лозунги в данном направлении, мы мужская...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru