многократное сравнение текстовых переменных

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Djars
Новичок
Новичок
Аватара пользователя
 
Сообщения: 44
Зарегистрирован: 09.06.2004 (Ср) 17:29

многократное сравнение текстовых переменных

Сообщение Djars » 12.07.2004 (Пн) 11:54

необходим алгоритм, для сравнения, а точнее создания проверки условия, которым служит равенство всех 14-ти текстовых переменных.
Переменные хранятся в двумерном массиве. z(1 to 14,1 to 100)
условие примерного вида: z(1,1)=z(2,1)....=z(14,1).
Как это реализовать? чтобы не делать это последовательно; огроменную проверку условий не делать, а быстро. Может рекурсия нужна?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 12.07.2004 (Пн) 15:18

Э... Может так?
Код: Выделить всё
Dim I As Long, fExpr As Boolean
  fExpr = True
For I = 1 To 13
  If z(I,1) <> z(I+1,1) Then
    fExpr = False
    Exit For
  End If
Next I
Debug.Print fExpr
Lasciate ogni speranza, voi ch'entrate.

Djars
Новичок
Новичок
Аватара пользователя
 
Сообщения: 44
Зарегистрирован: 09.06.2004 (Ср) 17:29

Сообщение Djars » 12.07.2004 (Пн) 15:42

дак дело в том, что таких условий около 20-ти.


код:
Sub delete()
Dim z(600, 14) As String
Dim m(600, 14) As Integer
Dim n(600, 14) As Integer
Dim y(600, 14) As String
Dim s(600) As Integer
Dim p(600) As Integer
Dim a(600) As Integer

Range("b2").Select

f = 0
For g = 1 To 14
nn = g
If g = 1 Then GoTo stage42
Range(Cells(m(1, g - 1), n(1, g - 1)), Cells(m(1, g - 1), n(1, g - 1))).Select
ActiveCell.Offset(0, 1).Activate
f = 0
stage42: For f = f + 1 To 2000

If (ActiveCell.Value = "") Then GoTo stage11
If (ActiveCell.Value = "") Then
x = 0
Else
x = x + 1
m(f, g) = ActiveCell.Row
n(f, g) = ActiveCell.Column
z(f, nn) = ActiveCell.Value
ActiveCell.Offset(1, 0).Activate

End If
Next f
stage11: Next g

stage1:

k = x
i = 0
f = 0
l = 0

cikle: j = 0



И нужно что-то типа этого:
For Each z() In z()
If z(q, 1) = z(w, 2) = z(e, 3) = z(r, 4) = z(t, 5) = z(y, 6) = z(u, 7) = z(i, 8) = z(o, 9) = z(p, 10) = z(qq, 11) = z(ww, 12) = z(ee, 13) = z(rr, 14) Then
x = x + 1
Next

Djars
Новичок
Новичок
Аватара пользователя
 
Сообщения: 44
Зарегистрирован: 09.06.2004 (Ср) 17:29

Сообщение Djars » 12.07.2004 (Пн) 18:51

и к тому же их хотелось бы отловить, т.е. знать какие именно равны

Djars
Новичок
Новичок
Аватара пользователя
 
Сообщения: 44
Зарегистрирован: 09.06.2004 (Ср) 17:29

Сообщение Djars » 12.07.2004 (Пн) 19:57

если объяснять механизм, то это примерно как нахождение повторов в двух одномерных таблицах в Аксесе, только это нужно на многомерный случай.
Хоть в каком русле мыслить?
Можно конечно задать все это последовательно сравниваться, но это ведь 14 условий, а если потом потребуется еще 16? как быть?
ведь должна же решаться эта задача :roll:

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 14.07.2004 (Ср) 10:03

Если это Access, то советую пользоваться SQL. Т.е. что-то типа этого:
Код: Выделить всё
select *
from MyTable as tbl1, MyTable as tbl2
where tbl1.Value1 = tbl2.Value2
Lasciate ogni speranza, voi ch'entrate.

Djars
Новичок
Новичок
Аватара пользователя
 
Сообщения: 44
Зарегистрирован: 09.06.2004 (Ср) 17:29

Сообщение Djars » 14.07.2004 (Ср) 10:06

нет, это не аксесс, это эксель

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 14.07.2004 (Ср) 10:35

тогда, что тебе мешает прилинковать лист к базе Access и работать уже с SQL

Djars
Новичок
Новичок
Аватара пользователя
 
Сообщения: 44
Зарегистрирован: 09.06.2004 (Ср) 17:29

Сообщение Djars » 14.07.2004 (Ср) 11:30

О! мне мешает многое! я пока не дошел до такого в книге для чайников по VBA :roll:


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Google-бот, SemrushBot и гости: 12

    TopList