
私は Windows 7 ラップトップの OpenOffice スプレッドシート (バージョン 3.3.0) に所有している (279) 枚の DVD のリストを持っており、(決められないときのために) 観る映画をランダムに選択する数式を作成したいと考えています。これは機能します:
=RANDBETWEEN(1;279)
しかし、表示されるのは数字だけなので、確認するには上下にスクロールする必要があります。また、DVD の合計数も「ハードコード」されています。映画の名前 (列 A に保持) を表示して、たとえば、数字が 277 の場合、映画の名前 (この場合は「X-Men 2」) が表示されるようにしたいです。次のように、列の先頭に文字を追加するだけでよいと想定しました。
=A(RANDBETWEEN(1;279))
動作しますが、エラーが発生します: #NAME?
それで、どうすれば...
- 映画の名前を表示する
- 新しい DVD を追加するときに先頭の番号を自動的に検出するので、数式にハードコードする必要がありませんか?
- セルをクリックするだけで新しい乱数を再生成できるようにするにはどうすればよいでしょうか? (つまり、Shift + Ctrl + F9 を押して手動で再計算する必要はありません)
ありがとう。
答え1
列Aの行の値を返すにはR、使用することができます
=INDIRECT("A"&
R)
列Aの値の数を数えるには、
=COUNTA(A1:A65536)
あなたの場合は、
=INDIRECT("A"&RANDBETWEEN(1;COUNTA(A1:A65536)))
再計算を実行するマクロ ボタンを作成できる可能性があります。OpenOffice.org Calc のマクロ言語について十分な知識がないため、これ以上のサポートはできません。
答え2
私は OpenOffice の内部構造に詳しくないので、3 番目のリクエストについてはお手伝いできませんが、Shift キーや Control キーは不要で、単純に F9 キーだけで動作します。ただし、他の 2 つについては次のようになります。
=INDIRECT(ADDRESS(RANDBETWEEN(1,MATCH("*",$A$1:$A$50000,-1)),1))
50000
50000 枚を超える DVD がある場合、または 50000 枚を超える可能性がある場合は、をもっと大きな値に置き換えてください。また、 が 以外の列にある場合は、 関数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
、先ほど作成したマクロを選択します(例:「更新」) - をクリックし
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
簡単にするために、列 A に DVD に番号を付け、列 B に DVD の名前を入力します (A2 = A1 + 1
さらに簡単にしたい場合は、数式を使用して番号を付けることもできます)。
列ラベルがある場合など、DVD が始まる上の行数を n と想定します。
=INDEX(B:B, RANDBETWEEN(1, MAX(A:A)) + n, 1)