foxyra
Участник

Offline
Сообщений: 24
|
Доброго времени суток! Есть диапазон ячеек. К примеру от B2 до B10 (в столбик) в этих ячейках есть определенные значения . Если еще одна ячейка к примеру D2 (она не входит в состав массива)в этой ячейке находится число.
задача как мне создать массив или диапазон ячеек из B2 и B10, чтобы в D2 вводить число, далее массив перебираем (ячейки) и ищет наличие совпадений. ну и далее я буду писать выражение IF и буду работать с ячейками которые совпали со одинаковым значением.
За ранее спасибо.
|
|
« Последнее редактирование: 31 Май 2019, 03:01 от foxyra »
|
Записан
|
|
|
|
foxyra
Участник

Offline
Сообщений: 24
|
Никто не знает как создать массив из ячеек? И перебрать его каким нибудь методом типо for.
|
|
|
Записан
|
|
|
|
economist
|
Option VBASupport 1 Option Compatible '----------------------------------------------- Sub WorkWithRange() ' [B2:B10] - массив ячеек, т.н. Range (диапазон) ' [D2] - искомое значение For each n in [B2:B10] if [D2] = n then ' делаем что-то, если истинно End if Next End sub
PS Забыл Next. Это VBA-код, который работает в StarBasic.
|
|
« Последнее редактирование: 31 Май 2019, 17:17 от economist »
|
Записан
|
Руб. за сто, что Питоньяк Любит водку и коньяк! Потому что мне, без оных, - Не понять его никак...
|
|
|
foxyra
Участник

Offline
Сообщений: 24
|
Option VBASupport 1 Option Compatible '----------------------------------------------- Sub WorkWithRange() ' [B2:B10] - массив ячеек, т.н. Range (диапазон) ' [D2] - искомое значение For each n in [B2:B10] if [D2] = n then ' делаем что-то, если истинно End if End sub
как сам массив объявить ? и как закончить цикл For ?
Извините я в "Танке"
|
|
|
Записан
|
|
|
|
rami
|
Option VBASupport 1 Option Compatible '----------------------------------------------- Sub WorkWithRange() ' [B2:B10] - массив ячеек, т.н. Range (диапазон) ' [D2] - искомое значение For each n in [B2:B10] if [D2] = n then ' делаем что-то, если истинно End if End sub
А что это было  как сам массив объявить ? Sub Main Dim oSheet 'объект листа Dim oCellRange 'объект диапазона ячеек Dim oDataArray 'массив массивов данных диапазона Dim oCell 'объект ячейки
oSheet = ThisComponent.Sheets(0) oCellRange = oSheet.getCellRangeByName("B2:B10") oDataArray = oCellRange.DataArray() oCell = oSheet.getCellRangeByName("D2") For i=0 To UBound(oDataArray) If oDataArray(i)(0)=oCell.value Then Print "Номер " + i, oDataArray(i)(0) Next End Sub В данном случае объявлять массив не нужно, данные содержатся в объекте диапазона ячеек в виде массива массивов, просто извлекаем данные и перебираем в цикле.
|
|
|
Записан
|
|
|
|
foxyra
Участник

Offline
Сообщений: 24
|
oSheet.getCellRangeByName("B2:B10")
ВОт она . Я не знал как обратиться к диапазону, я только знал как к именно координате обратиться .
У меня в редактор не дает после .точки вариантов , вот и парюсь
Спасибо всем большое ,ща проверять буду
|
|
|
Записан
|
|
|
|
foxyra
Участник

Offline
Сообщений: 24
|
Sub Main Dim oSheet 'объект листа Dim oCellRange 'объект диапазона ячеек Dim oDataArray 'массив массивов данных диапазона Dim oCell 'объект ячейки
oSheet = ThisComponent.Sheets(0) oCellRange = oSheet.getCellRangeByName("B2:B10") oDataArray = oCellRange.DataArray() oCell = oSheet.getCellRangeByName("D2") For i=0 To UBound(oDataArray) If oDataArray(i)(0)=oCell.value Then Print "Номер " + i, oDataArray(i)(0) Показывает какое число совпало . А как обратиться к ячейке этого числа ? Next End Sub
Еще вопросик ,как обратиться к совпавшим ячейкам? я так понимаю oDataArray(i).а дальше?
|
|
« Последнее редактирование: 31 Май 2019, 10:57 от foxyra »
|
Записан
|
|
|
|
Bigor
|
Еще вопросик ,как обратиться к совпавшим ячейкам? а что вы хотите с ними сделать? Можно все изменения внести в массив, а потом накатить его на диапазон ячеек
|
|
|
Записан
|
|
|
|
foxyra
Участник

Offline
Сообщений: 24
|
я хочу менять цвет ячейки. Без диапазона работает , а с диапазоном только весь диапазон красит.
|
|
|
Записан
|
|
|
|
Bigor
|
Ищите по форуму, недавно была тема по раскраске ячеек слов в ячейках, если они равны. еще варианты 1. можно по индексу массива, вычислить адрес ячейки 2. раз с данными вы ничего не делаете, можно вообще обойтись без массива и перебирать ячейки, сравнивать, раскрашивать 3. условное форматирование
|
|
« Последнее редактирование: 31 Май 2019, 11:08 от Bigor »
|
Записан
|
|
|
|
foxyra
Участник

Offline
Сообщений: 24
|
а просто к ячейке нельзя обратиться ? уже в if ? выбрать диапазон(i) и потом путь к цвету?
|
|
|
Записан
|
|
|
|
Bigor
|
а просто к ячейке нельзя обратиться ? уже в if ? выбрать диапазон(i) и потом путь к цвету? это вариант 1  доступ к ячейки по индексу массива как то так oCellRange.getCellByPosition(0, i)
|
|
|
Записан
|
|
|
|
foxyra
Участник

Offline
Сообщений: 24
|
Все заработало спасибо ,огромное товарищи. Низкий Вам поклон.
|
|
|
Записан
|
|
|
|
foxyra
Участник

Offline
Сообщений: 24
|
а как можно покрасить фон ячейки соседней в строке в тот же цвет?
|
|
« Последнее редактирование: 31 Май 2019, 14:02 от foxyra »
|
Записан
|
|
|
|
Bigor
|
а как можно покрасить фон ячейки соседней в строке в тот же цвет?
т.е. те которые слева/справа? Они в диапазон не входят. Или расширять диапазон и тогда можно обращаться к ним. Либо вариант 2 непосредственный перебор ячеек.
|
|
|
Записан
|
|
|
|
|