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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.11.2010, 19:47   #1
Aleks2215
Пользователь
 
Регистрация: 19.09.2010
Сообщений: 30
Восклицание Работа с массивом

допустим имеется массив
q0
q1
q2
как сделать из него массив объединенных элементов, например
q1
q0 q2
я нашел лишь функцию join, но она работает только с целым массивом, а не с частью
Aleks2215 вне форума Ответить с цитированием
Старый 01.11.2010, 20:49   #2
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

Есть такое слово "цикл" ...
Или в лоб:
Код:
Sub Example()
  Dim a1 As Variant
  Dim a2 As Variant
  Dim i As Long  
  a1 = Array("q0", "q1", "q2")
  a2 = Array(a1(1), a1(0) & a1(2))
  For i = LBound(a2) To UBound(a2)
       Debug.Print a2(i)
  Next i
End Sub
Aent вне форума Ответить с цитированием
Старый 02.11.2010, 11:30   #3
Aleks2215
Пользователь
 
Регистрация: 19.09.2010
Сообщений: 30
По умолчанию

А можно ли как то сравнить ячейку Excel с 2 переменными, с какой либо другой ячейкой, например массив
q0 q2 (я так понимаю необходим разделитель)
q1
и ячейки
q0
q1
q2
к примеру q0 q2 сравнить с q2, и раз они частично совпадают то произвести какие то действия. Как такое провернуть?
Aleks2215 вне форума Ответить с цитированием
Старый 02.11.2010, 11:57   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Цикл в цикле и сравнение по Instr() или Like

For i = 1 To aa
For ii = 1 To bb
'сравнение
Next ii, i

На примере выше:
Код:
Sub Example()
  Dim a1 As Variant
  Dim a2 As Variant
  Dim i As Long, ii As Long
  a1 = Array("q0", "q1", "q2")
  a2 = Array(a1(1), a1(0) & a1(2))
  For i = LBound(a1) To UBound(a1)
  For ii = LBound(a2) To UBound(a2)
       If a2(ii) Like "*" & a1(i) & "*" Then Debug.Print a1(i) & " = " & a2(ii)
  Next ii, i
End Sub
вывод:
q0 = q0q2
q1 = q1
q2 = q0q2
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 02.11.2010 в 12:06. Причина: исправил код
Hugo121 вне форума Ответить с цитированием
Старый 03.11.2010, 22:24   #5
Aleks2215
Пользователь
 
Регистрация: 19.09.2010
Сообщений: 30
По умолчанию

Спасибо всем большое за помощь) Но назрел еще вопрос Сколько я ни пытался, переложить на нужный мне лад полученные знания не удалось(
Можно ли как то отфильтровать исходный многомерный массив
q0 q1 q0
q1 q1 q2
q2 q1 q0
так, чтобы на выходе получился
q0q2 q1q1 q0q0
q1 q1 q2
Там где 2 переменные рядом это один элемент.
Aleks2215 вне форума Ответить с цитированием
Старый 03.11.2010, 22:58   #6
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

По какому принципу идет эта фильтрация?
motorway вне форума Ответить с цитированием
Старый 03.11.2010, 23:14   #7
Aleks2215
Пользователь
 
Регистрация: 19.09.2010
Сообщений: 30
По умолчанию

Фильтрация идет по первому столбцу. Обозначим столбцы S, a, b
S__a__b
q0 q1 q0
q1 q1 q2
q2 q1 q0

Объединяем 2 строчки S, например q0 и q2, следовательно объединяются соответствующие строчки a и b. Получаем
S_____a____b
q0q2 q1q1 q0q0
q1____q1___q2

Некоторые элементы я разделил знаком _ чтобы было наглядней
Aleks2215 вне форума Ответить с цитированием
Старый 04.11.2010, 22:23   #8
Aleks2215
Пользователь
 
Регистрация: 19.09.2010
Сообщений: 30
По умолчанию

Подскажите, как сравнить 2 переменные
q0q2 и q1q0 так, чтобы они считались подобными
(не поиск через Instr по q0)
Aleks2215 вне форума Ответить с цитированием
Старый 04.11.2010, 23:14   #9
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Сравнить на равенство? <>
motorway вне форума Ответить с цитированием
Старый 04.11.2010, 23:20   #10
Aleks2215
Пользователь
 
Регистрация: 19.09.2010
Сообщений: 30
По умолчанию

Да, на равенство. И в первой и во второй присутствует элемент q0. Нужно чтобы на основании этого они равными считались.
Aleks2215 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с массивом monkey1631 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 19.04.2010 01:16
Работа с массивом ZOHAN Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 16.04.2010 01:20
работа с массивом s2dentishe Помощь студентам 2 12.12.2009 22:35
Работа с массивом Horknee Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 14.04.2009 18:02
работа с массивом begemotikdin Паскаль, Turbo Pascal, PascalABC.NET 2 21.06.2008 21:40