Вопрос № 128385: Помогите написать программу:
Даны натуральное число n, действительная матрица размера nх9. Найти среднее арифметическое каждого из столбцов...Вопрос № 128393: Уважаемый эксперт, Мegaloman!
Я попробовала Вашу программку приспособить к своей базе - не вышло..
Что я не так сделала?
Помогите, пожалуйста!
********
Sub Ìàêðîñ4()
'
' Ìà...Вопрос № 128431: Уважаемые Эксперты!
подскажите, пожалуйста, как убрать пустые строки в базе данных на EXEL (данные набиты не всегда через одну строку)?
(не в ручную, а циклом)
заранее благодарна!...
Вопрос № 128.385
Помогите написать программу:
Даны натуральное число n, действительная матрица размера nх9. Найти среднее арифметическое каждого из столбцов
Отвечает: Dmitriev D.O.
Здравствуйте, Дегтярь Игорь Геннадиевич!
Где-то так:
Dim n as Integer, i as Integer, j as Integer
Dim M(n,9) as integer, sr (10) as Single
for i=1 to 9
for j =1 to n
sr(i)=sr(i)+M(i,j)
next j
sr(i)=sr(i)/9
next i
Ответ отправил: Dmitriev D.O. (статус: 1-ый класс)
Ответ отправлен: 21.03.2008, 15:13
Отвечает: Черников Игорь Владимирович
Здравствуйте, Дегтярь Игорь Геннадиевич!
Вот Ваш код:
Dim Matrica() As Integer
n = InputBox("Введите число n") ' Ввод размерности, если не нужно убрать
ReDim Matrica(n, 9)
'* * * Здесь вы должны заполнить массив
For i = 0 To n
For j = 0 To 9
Summa = Summa + Matrica(i, j)' Складываем все числа столбца(если там будет не число, произойдёт ошибка)
Next j
' вычисляем среднее значение и записываем в переменную
'Число 10 обозначает количество строк, т.к. размерность массива начинается с 0, а не с 1
otvet = otvet & Chr(10) & "Среднее значение в столбце " & i & " равно " & CStr(Summa / (10))
Summa = 0
Next i
MsgBox (otvet) ' Выводим ответ на экран
Удачи!
--------- От каждого по способностям, каждому по труду
Уважаемый эксперт, Мegaloman!
Я попробовала Вашу программку приспособить к своей базе - не вышло..
Что я не так сделала?
Помогите, пожалуйста!
********
Sub Ìàêðîñ4()
'
' Ìàêðîñ3 Ìàêðîñ
' Ìàêðîñ çàïèñàí 20.03.2008 (Shubeiko M. L.)
'
Sheets("L1").Select
For i = 1 To 12
For j = 1 To 14
If Sheets("L2").Range("c2").Offset(j - 1, i - 1) <> "" Then
Sheets("L2").Range("c2").Offset(j - 1, i - 1) = Range("e2").Offset(j - 1, i - 1) - Range("c2").Offset(j - 1, 0)
End If
Next j
Next i
Sheets("L2").Select
End Sub
подскажите, пожалуйста, какой цикл обработает приблизительно такую базу данных в экселе
L1
как сделать так, чтобы пустые строки и ячейки не обрабатывались?
чтобы они так и оставались пустыми?
н-р: H14-E14 должна быть пустой и нечётные строки не надо обрабатывать - они пустые..
***************
Отвечает: megaloman
Здравствуйте, Шубейко Маргарита!
Необычно как-то публично получать адресованный мне вопрос не по внутренней почте. Как я понял, это повторение вопроса № 128289. Он мне изначально не понравился, т к я не очень понимаю (а Вы не определили), что такое пустая строка.
Черников Игорь Владимирович ответил на вопрос, я решение не проверял, но думаю, он ошибиться не мог. Поэтому и думать над ответом не стал - его и мое решение Вопрос № 128130 по логике ничем не отличается, отличается способом адресации ячеек. Его способ, наверное, более эффективен, а тот способ, что использовал я, на мой взгляд, более нагляден. Проблема решена - я потерял к ней интерес.
Вы выдали свой вариант проверки строки и им я тоже воспользуюсь, раз Вы его считаете достаточным: считаю строку пустой, если клетка "e" в конкретной строке ="" (Правда, у Вас это "с")
Решение смотрите в приложении, вроде бы работает, проверял
Приложение:
--------- Нет времени на медленные танцы
Ответ отправил: megaloman (статус: Студент)
Ответ отправлен: 21.03.2008, 15:40 Оценка за ответ: 5 Комментарий оценки: Огромное спасибо!!!
Вопрос № 128.431
Уважаемые Эксперты!
подскажите, пожалуйста, как убрать пустые строки в базе данных на EXEL (данные набиты не всегда через одну строку)?
(не в ручную, а циклом)
заранее благодарна!
Отвечает: ualife
Здравствуйте, Шубейко Маргарита!
Код в приложении. Он не идеален, там есть парочка "ошибок" (работать все будет, но можно было проще), которые отлавливаются со знаниями Excel, VBA и English language.
Желаю удачи :-)
Приложение:
--------- Нет границ - есть лишь препятствия!
Ответ отправил: ualife (статус: 8-ой класс)
Ответ отправлен: 21.03.2008, 15:36 Оценка за ответ: 5 Комментарий оценки: Большое СПАСИБО!!!
Отвечает: Тесленко Евгений Алексеевич
Здравствуйте, Шубейко Маргарита!
Вполне работоспособный код в приложении.
Евгений.
Приложение:
Ответ отправил: Тесленко Евгений Алексеевич (статус: Студент)
Ответ отправлен: 21.03.2008, 16:17 Оценка за ответ: 5 Комментарий оценки: Большое СПАСИБО!
Отвечает: HookEst
Здравствуйте, Шубейко Маргарита!
Вот еще вариант, который удаляет строки с активного листа, без использования циклов:
Sub t()
On Error Resume Next
With ActiveSheet.Cells
.SpecialCells(xlCellTypeConstants).EntireRow.Hidden = True
.SpecialCells(xlCellTypeFormulas).EntireRow.Hidden = True
.SpecialCells(xlCellTypeVisible).EntireRow.Delete
.EntireRow.Hidden = False
End With
End Sub
здесь, сначала скрываются все строки, где есть константы, потом все строки где есть формулы, потом удаляются все видимые строки(т.е. как раз те. где нет ни константы ни формулы), и все отображается опять.
А если же в Вашей базе данных, есть обязательный столбец(т.е. такой, в котором обязательно есть значение на всех строках с данными, например ID или Фамилия или что там у ВАс), то например одна строка:
Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
удалит с листа все строки для которых нет значения в первом столбце.
Успехов.
Ответ отправил: HookEst (статус: Специалист)
Ответ отправлен: 24.03.2008, 11:42 Оценка за ответ: 5 Комментарий оценки: БОЛЬШОЕ СПАСИБО!
для меня особенно ценно, что это всё делается без цикла!
удачи Вам!