powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / обращение к массиву с текстом вместо индекса
18 сообщений из 18, страница 1 из 1
обращение к массиву с текстом вместо индекса
    #37234436
celentano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Народ, помогите пожалуйста.
В двумерный массив хочу посчитать сумму при условии совпадения названий филиала и вида.
Без прочих циклов и сравнений:

fil = Cells(I, 2)
vid = Cells(I, 3)
pl(fil, vid) = pl(fil, vid) + Cells(I, 1)

Непонятно как объявить массив pl - в виде индексов везде подразумевают только числа.
Спасибо.
...
Рейтинг: 0 / 0
обращение к массиву с текстом вместо индекса
    #37234448
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
создайте коллекцию на основе своего собственного класса. сделайте индекс у коллекции строкового типа
...
Рейтинг: 0 / 0
обращение к массиву с текстом вместо индекса
    #37234462
celentano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One,

не понял - в коллекции нужно перечислять все возможные значения?
Не хотелось бы.
...
Рейтинг: 0 / 0
обращение к массиву с текстом вместо индекса
    #37234475
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
celentanoKonst_One,
не понял - в коллекции нужно перечислять все возможные значения?
Не хотелось бы.

Коллекция - это типа массив, где к элементу возможно обратиться не только по индексу, но и по имени.
Почитайте про них любой онлайн-учебник или хелп - там все предельно просто.
...
Рейтинг: 0 / 0
обращение к массиву с текстом вместо индекса
    #37234547
celentano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
почитать не помогает, а есть какой-нибудь простой кусочек программы по созданию коллекции?
...
Рейтинг: 0 / 0
обращение к массиву с текстом вместо индекса
    #37234556
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
celentanoпочитать не помогает
Бедааааааа
celentano а есть какой-нибудь простой кусочек программы по созданию коллекции?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private Sub Command1_Click()

Dim MyColl As New Collection

MyColl.Add  5 , "Element1"
MyColl.Add "слово из трех букв", "EsheElement"
MyColl.Add  222 . 333 , "Nu I Vot"

MsgBox "Количество элементов коллекции: " + CStr(MyColl.Count)
MsgBox "Второй элемент коллекции: " + CStr(MyColl( 2 ))
MsgBox "Элемент коллекции с ключом 'Nu I Vot': " + CStr(MyColl("Nu I Vot"))

End Sub
...
Рейтинг: 0 / 0
обращение к массиву с текстом вместо индекса
    #37234597
celentano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, это одномерная коллекция,
а если у меня двумерный массив, то под второй индекс создавать другую коллекицю?
...
Рейтинг: 0 / 0
обращение к массиву с текстом вместо индекса
    #37234602
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
celentanoShocker.Pro, это одномерная коллекция,
а если у меня двумерный массив, то под второй индекс создавать другую коллекицю?

Зачем? Кто мешает использовать двойной индекс в одном? Это же текстовая строка, туда можно че угодно запихать (единственное ограничение - не может ключ начинаться с цифры)
Код: plaintext
MyColl("Index1,Index2")
Впрочем, в коллекцию можно добавлять в качестве элемента любой объект, в том числе другую коллекцию, это тоже никто не запрещает. Но не вижу большого смысла в этом.
...
Рейтинг: 0 / 0
обращение к массиву с текстом вместо индекса
    #37234634
celentano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

а вот если сцепка fil_vid повторяется, то нарушение уникальности индекса )
Вообще как то так или вообще не так?)

Dim fil_vid As New Collection
n = Cells(15, 1).End(xlDown).Row
For I = 15 To n
fil_vid.Add Cells(I, 2), Cells(I, 2) & " " & Cells(I, 3)
Next I

For I = 15 To n
fil_vid(fil & " " & vid) = fil_vid(fil & " " & vid) + Cells(I, 11)
Next I
...
Рейтинг: 0 / 0
обращение к массиву с текстом вместо индекса
    #37234662
celentano,
зачем в два прохода? Добавляйте сразу сумму...
Код: plaintext
1.
2.
3.
4.
5.
Dim fil_vid As New Collection
n = Cells( 15 ,  1 ).End(xlDown).Row
For I =  15  To n
fil_vid.Add Cells(I,  2 ) + Cells(I,  11 ), Cells(I,  2 ) & " " & Cells(I,  3 )
Next I
почему именно в коллекцию?
ЗЫ: про нарушение уникального индекса - это Вы здорово!
...
Рейтинг: 0 / 0
обращение к массиву с текстом вместо индекса
    #37234919
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
celentanoа вот если сцепка fil_vid повторяется, то нарушение уникальности индекса
А что, в двумерном массиве у тебя тоже бывают нарушения уникальности индекса? :))
...
Рейтинг: 0 / 0
обращение к массиву с текстом вместо индекса
    #37235206
celentano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

This key is already associated with an element of this collection
Я так понял что создаваемый мною текстовый ключ (который вместо индекса) повторяется
...
Рейтинг: 0 / 0
обращение к массиву с текстом вместо индекса
    #37235320
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
celentanoShocker.Pro,

This key is already associated with an element of this collection
Я так понял что создаваемый мною текстовый ключ (который вместо индекса) повторяется
Ключ, КАК И ИНДЕКС обычного массива , естественно повторяться не может, иначе как ты обратишься к нужному тебе элементу массива?

Похоже, ты не совсем верно обозначил себе метод решения своей задачи. То есть как работать с текстовыми индексами я тебе подсказал, но на самом деле требуется нечто другое
...
Рейтинг: 0 / 0
обращение к массиву с текстом вместо индекса
    #37237629
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гм.. Гм.. > Автор: Shocker.Pro
> (единственное ограничение - не может ключ начинаться с цифры)


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub dsf()
Dim mColl As New Collection, i As Long

For i =  1  To  10 
    mColl.Add i, CStr(i)
Next i
For i =  1  To  10 
    Debug.Print CStr(mColl.Item(i))
Next i

End Sub
Я бы перефразировал: Так как ключ - строка, то попытка задать ключ числом, не преобразованным в строку вызовет
ошибку


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
обращение к массиву с текстом вместо индекса
    #37237682
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,

да, я ошибся
Код: plaintext
1.
2.
Dim a As New Collection
a.Add "[[[", "5S"
MsgBox a("5S")

У меня были проблемы с каким-то контролом типа ImageList или ListView, я думал, это касается всех коллекций
...
Рейтинг: 0 / 0
обращение к массиву с текстом вместо индекса
    #37237704
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, вот такая штуковина не проходит:
Код: plaintext
ListView1.ListItems.Add , "5", "fff"

но
Код: plaintext
ListView1.ListItems.Add , "5s", "fff"
проходит, так что теперь самому неясно, с чего я это взял


А у простой коллекции вообще не наблюдается этой проблемы:
Код: plaintext
1.
2.
3.
Dim a As New Collection
a.Add "[[[", "5"
MsgBox a("5")
MsgBox a( 1 )
...
Рейтинг: 0 / 0
обращение к массиву с текстом вместо индекса
    #37240097
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProВпрочем, в коллекцию можно добавлять в качестве элемента любой объект, в том числе другую коллекцию, это тоже никто не запрещает. Но не вижу большого смысла в этом.

Ну как сказать - я это неплохо использую - у меня обработка контролов формы на этом с незапамятных времен построена...
...
Рейтинг: 0 / 0
обращение к массиву с текстом вместо индекса
    #37240977
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrFНу как сказатья имел ввиду - в данном конкретном случае
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / обращение к массиву с текстом вместо индекса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]