Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2009, 09:13   #1
pafnutic
 
Регистрация: 03.10.2008
Сообщений: 7
По умолчанию Процедура на VBA (Excel)

Не знаю как написать процедуру на VBA, которая сравнивает столбцы квадратной матрицы 3-го порядка. Сравнение i-го и j-го столбца оформить в виде функции (должна возвращать True – при совпадении столбцов, False – в противном случае).
Сделал вот так, но не могу осуществить в виде функции.
Код:
Sub List6_18()
Dim Int_Array(1 To 3, 1 To 3) As Integer
Dim str_msg As String
Dim str_msg1 As String
Dim str_msg2 As String
Dim str_msg3 As String
Dim i As Integer
Dim j As Integer
str_msg = ""
str_msg1 = ""
str_msg2 = ""
str_msg3 = ""
For i = 1 To 3
For j = 1 To 3
Int_Array(i, j) = InputBox("Введите A(" & i & "," & j & ")", "Ввод элементов массива")
Next j
Next i
For i = 1 To 3
For j = 1 To 3
str_msg = str_msg & Format(Int_Array(i, j), "@@@@@")
Next j
str_msg = str_msg & Chr(13) 'перевод строки
Next i
MsgBox "Введено: " & Chr(13) & str_msg, , "Вывод ранее введенного массива"

For i = 1 To 3
str_msg1 = str_msg1 & Format(Int_Array(i, 1), "@@@@@")
Next i

For i = 1 To 3
str_msg2 = str_msg2 & Format(Int_Array(i, 2), "@@@@@")
Next i

For i = 1 To 3
str_msg3 = str_msg3 & Format(Int_Array(i, 3), "@@@@@")
Next i

If str_msg1 = str_msg2 Then
MsgBox "Столбец 1 совпадает со столбцом 2"
Else
MsgBox "Столбец 1 не совпадает со столбцом 2"
End If

If str_msg1 = str_msg3 Then
MsgBox "Столбец 1 совпадает со столбцом 3"
Else
MsgBox "Столбец 1 не совпадает со столбцом 3"
End If

If str_msg2 = str_msg3 Then
MsgBox "Столбец 2 совпадает со столбцом 3"
Else
MsgBox "Столбец 2 не совпадает со столбцом 3"
End If
End Sub
pafnutic вне форума Ответить с цитированием
Старый 16.04.2009, 11:51   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

написал по другому. данные вводятся как диапазоны строк, функция сравнения столбцов - в наличии, см.вложение
Вложения
Тип файла: rar Книга86.rar (9.5 Кб, 18 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 16.04.2009, 12:26   #3
pafnutic
 
Регистрация: 03.10.2008
Сообщений: 7
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
написал по другому. данные вводятся как диапазоны строк, функция сравнения столбцов - в наличии, см.вложение
Надо сравнивать столбцы одной матрицы, а не двух!
Вот так должно примерно быть:
Исходные данные:
Матрица А равна:
1 2 1
0 3 0
1 5 1

Результат:
Столбец 1 не совпадает со столбцом 2
Столбец 1 совпадает со столбцом 3
Столбец 2 не совпадает со столбцом 3

Последний раз редактировалось pafnutic; 16.04.2009 в 12:28. Причина: Неправильно отобразилось
pafnutic вне форума Ответить с цитированием
Старый 16.04.2009, 18:39   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

воспользуйтесь этим:
Код:
Function Compare2(mA As Range) As String
  Dim s As String, c1 As Integer, c2 As Integer
  s = "Столбцы: "
  For c1 = 1 To mA.Columns.Count
    For c2 = c1 + 1 To mA.Columns.Count
      s = s & c1 & " и " & c2 & " - " & IIf(Ok2(mA, c1, c2), "", "нe ") & "совпадают,  "
    Next
  Next
  Compare2 = Left(s, Len(s) - 3)
End Function

Function Ok2(mA As Range, c1 As Integer, c2 As Integer) As Boolean
  Dim r As Integer
  Ok2 = True
  For r = 1 To mA.Rows.Count
    If mA(r, c1) <> mA(r, c2) Then Ok2 = False: Exit Function
  Next
End Function
Вложения
Тип файла: rar Книга86.rar (10.8 Кб, 14 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 02.09.2009, 16:29   #5
lite
Пользователь
 
Регистрация: 02.09.2009
Сообщений: 10
По умолчанию

Privet profi !! HELP!!!!!!!!! Nuzno sravnitj A i B stolbci .Esli v A1 i B1 minusovie zna4enija ili toljko + to v C1 piwetjsja 1 .Esli v A+ v B- to v C piwetjsja 0
lite вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Excel VBA fidot Microsoft Office Excel 1 28.12.2008 19:20
VBA Excel Slicker Помощь студентам 4 04.11.2008 17:14
VBA Excel задача Slicker Microsoft Office Excel 2 04.11.2008 14:06
VBA i Excel corsarlt Microsoft Office Excel 3 03.04.2008 06:13