
У меня есть список моих (279) DVD в таблице OpenOffice (версия 3.3.0) на моем ноутбуке с Windows 7, и я хочу создать формулу для случайного выбора фильма для просмотра (для случаев, когда я не могу определиться). Это работает:
=RANDBETWEEN(1;279)
Но все, что он дает, это число, которое я должен затем прокручивать вверх и вниз, чтобы проверить, и в нем также есть общее количество DVD, "жестко закодированное". Я хочу отобразить название фильма (хранящееся в столбце A), так что если, например, число было 277, то появится название фильма, в данном случае "Люди Икс 2". Я предполагал, что просто добавлю букву столбца спереди, вот так:
=A(RANDBETWEEN(1;279))
сработало бы, но выдает ошибку: #ИМЯ?
Итак, как я могу...
- Сделать так, чтобы отображалось название фильма
- Автоматически определять верхнее число при добавлении новых DVD-дисков, чтобы мне не приходилось жестко кодировать его в формуле?
- Как сделать так, чтобы мне просто щелкнуть по ячейке, чтобы сгенерировать новое случайное число? (т.е. не нужно было бы пересчитывать вручную, нажимая Shift+Ctrl+F9)
Спасибо.
решение1
Чтобы вернуть значение из столбца A, строкар, вы можете использовать
=INDIRECT("A"&
р)
Чтобы подсчитать количество значений в столбце A, вы можете использовать
=COUNTA(A1:A65536)
Так что в вашем случае вы могли бы использовать
=INDIRECT("A"&RANDBETWEEN(1;COUNTA(A1:A65536)))
Вы могли бы сделать кнопку макроса, которая будет пересчитывать для вас. Я недостаточно хорошо знаю макроязык OpenOffice.org Calc, чтобы предоставить больше помощи.
решение2
Я недостаточно знаком с внутренним устройством OpenOffice, чтобы помочь с вашим третьим запросом, за исключением того, что для меня работает простое нажатие F9, не требуется никаких shift или control. Что касается двух других, то:
=INDIRECT(ADDRESS(RANDBETWEEN(1,MATCH("*",$A$1:$A$50000,-1)),1))
Замените 50000
на что-то большее, если у вас есть или вы думаете, что у вас будет более 50000 DVD, и замените 1
в ADDRESS()
функции, если она находится в столбце, отличном от A
.
решение3
- Поместите формулу из ответа Bavi_H в ячейку
B1
(=INDIRECT("A"&RANDBETWEEN(1;COUNTA(A1:A65536)))
) - Сделайте ширину и высоту
B1
красивыми и большими - Формат
B1
с привлекательным шрифтом большого размера, выбранным таким образом, чтобы длинные названия фильмов все равно помещались. - Выберите любую ячейку в столбце
A
и выберите пункт меню.Format > Column > Hide
- Выберите
Tools > Macros > Record Macros
пункт меню - Нажмите F9 (или Ctrl-Shift-F9)
- Нажмите на
Stop Recording
кнопку - В
Basic Macros Dialog
появившемся окне введите в поле имя, например «обновить»Macro name
, выберите в поле электронную таблицуSave macro in
, щелкнитеSave
и введите имя модуля, например «фильмы», щелкнитеOK
- Выберите пункт меню
View > Toolbars > Form Controls
- На этой панели инструментов убедитесь, что
Design Mode
кнопка включена. - Нажмите
Form Design
кнопку, чтобы сделать видимой панель инструментов «Дизайн формы». - На
Form Design
панели инструментов отключитеOpen in Design Mode
кнопку - На
Form Controls
панели инструментов нажмите наLabel Field
кнопку - Перетащите курсор из верхнего левого угла ячейки B1 в ее нижний правый угол, чтобы создать поле метки того же размера, что и ячейка.
- Щелкните правой кнопкой мыши по ячейке/метке и выберите
Control...
пункт из контекстного меню. - Выберите
General
вкладку, затем удалите текст изLabel
поля. - Выберите
Events
вкладку, нажмите на...
кнопку - В
Assign Action
диалоговом окне нажмите наMacro...
кнопку - В
Macro Selector
диалоговом окне разверните записи под вашей таблицей вLibrary
поле, пока не увидите имя модуля, которое вы использовали ранее (например, «фильмы»), и щелкните по нему. - В
Macro name
поле выберите макрос, который вы создали ранее (например, «refresh»). - Нажмите
OK
,OK
затем нажмите и закройтеProperties
окно, нажав наX
кнопку в правом верхнем углу. - На
Form Controls
панели инструментов отключитеDesign Mode
- Теперь при нажатии на ячейку
B1
отображаемое там название фильма должно измениться. - Закройте панели инструментов, если хотите.
- Прежде чем сохранить электронную таблицу, вы можете отключить
Tools > Options > OpenOffice.org Calc > View
,Window:
Column Headers and Rows
,Horizontal Scroll Bars
иVertical Scroll Bars
дляSheet tabs
более аккуратного внешнего вида (вам может потребоваться включить их снова, когда вы в следующий раз создадите новую пустую электронную таблицу). - Сохраните вашу электронную таблицу
- ???
- Выгода
решение4
Чтобы упростить задачу, пронумеруйте DVD-диски в столбце A и укажите названия DVD-дисков в столбце B (вы можете использовать формулу A2 = A1 + 1
для нумерации, если хотите сделать задачу еще проще).
Предположим, что n = количество строк выше того места, где начинаются DVD-диски, например, если у вас есть заголовки столбцов.
=INDEX(B:B, RANDBETWEEN(1, MAX(A:A)) + n, 1)