ランダムにDVDを選ぶためのスプレッドシートの公式の質問

ランダムにDVDを選ぶためのスプレッドシートの公式の質問

私は Windows 7 ラップトップの OpenOffice スプレッドシート (バージョン 3.3.0) に所有している (279) 枚の DVD のリストを持っており、(決められないときのために) 観る映画をランダムに選択する数式を作成したいと考えています。これは機能します:

=RANDBETWEEN(1;279)

しかし、表示されるのは数字だけなので、確認するには上下にスクロールする必要があります。また、DVD の合計数も「ハードコード」されています。映画の名前 (列 A に保持) を表示して、たとえば、数字が 277 の場合、映画の名前 (この場合は「X-Men 2」) が表示されるようにしたいです。次のように、列の先頭に文字を追加するだけでよいと想定しました。

=A(RANDBETWEEN(1;279))

動作しますが、エラーが発生します: #NAME?

それで、どうすれば...

  1. 映画の名前を表示する
  2. 新しい DVD を追加するときに先頭の番号を自動的に検出するので、数式にハードコードする必要がありませんか?
  3. セルをクリックするだけで新しい乱数を再生成できるようにするにはどうすればよいでしょうか? (つまり、Shift + Ctrl + F9 を押して手動で再計算する必要はありません)

ありがとう。

答え1

  1. 列Aの行の値を返すにはR、使用することができます=INDIRECT("A"&R)

  2. 列Aの値の数を数えるには、=COUNTA(A1:A65536)

    あなたの場合は、=INDIRECT("A"&RANDBETWEEN(1;COUNTA(A1:A65536)))

  3. 再計算を実行するマクロ ボタンを作成できる可能性があります。OpenOffice.org Calc のマクロ言語について十分な知識がないため、これ以上のサポートはできません。

答え2

私は OpenOffice の内部構造に詳しくないので、3 番目のリクエストについてはお手伝いできませんが、Shift キーや Control キーは不要で、単純に F9 キーだけで動作します。ただし、他の 2 つについては次のようになります。

=INDIRECT(ADDRESS(RANDBETWEEN(1,MATCH("*",$A$1:$A$50000,-1)),1))

5000050000 枚を超える 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を閉じます。PropertiesX
  • ツールバーでForm ControlsDesign Mode
  • セルをクリックすると、B1そこに表示される映画名が変わります
  • 必要に応じてツールバーを閉じます
  • スプレッドシートを保存する前に、、、Tools > Options > OpenOffice.org Calc > ViewをオフにしてWindow: Column Headers and Rows、非常にすっきりとした外観にすることができます (次に新しい空白のスプレッドシートを作成するときにHorizontal Scroll Bars、これらをオンに戻す必要がある場合があります)。Vertical Scroll BarsSheet tabs
  • スプレッドシートを保存する
  • ???
  • 利益

映画選択

答え4

簡単にするために、列 A に DVD に番号を付け、列 B に DVD の名前を入力します (A2 = A1 + 1さらに簡単にしたい場合は、数式を使用して番号を付けることもできます)。

列ラベルがある場合など、DVD が始まる上の行数を n と想定します。

=INDEX(B:B, RANDBETWEEN(1, MAX(A:A)) + n, 1) 

関連情報