web-dev-qa-db-ja.com

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

Windows 7ラップトップのOpenOfficeスプレッドシート(​​バージョン3.3.0)に(279)DVDのリストがあり、視聴する映画をランダムに選択する式を作成したいと思います(自分で作成できない場合のために)マインド)。これは機能します:

=RANDBETWEEN(1;279)

しかし、それが与えるのは、チェックするために上下にスクロールしなければならない数だけであり、DVDの「ハードコードされた」総数も含まれています。映画の名前(列Aに表示)を表示して、たとえば番号が277の場合、映画の名前(この場合は「X-Men2」)が表示されるようにします。次のように、前に列文字を追加するだけだと思いました。

=A(RANDBETWEEN(1;279))

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

だから、どうすれば...

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

ありがとう。

4
andygrunt
  1. 列A、行[〜#〜] r [〜#〜]から値を返すには、_=INDIRECT("A"&_[〜#〜] r [〜#〜 ] _)_

  2. 列Aの値の数をカウントするには、=COUNTA(A1:A65536)を使用できます。

    したがって、あなたの場合は、=INDIRECT("A"&RANDBETWEEN(1;COUNTA(A1:A65536)))を使用できます。

  3. 再計算するマクロボタンを作成できる場合があります。 OpenOffice.org Calcのマクロ言語について、そこでさらにヘルプを提供するのに十分な知識がありません。

6
Bavi_H

私はOpenOfficeの内部に精通しておらず、3番目のリクエストを支援することができません。ただし、単純なF9だけで機能し、シフトや制御は必要ありません。ただし、他の2つについては次のとおりです。

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

50000枚を超えるDVDがある場合は、_50000_をより大きなものに置き換え、A以外の列にある場合は、ADDRESS()関数の_1_を置き換えます。 。

0
farfromhome

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

N =列ラベルがある場合など、DVDが始まる場所より上の行数と仮定します。

=INDEX(B:B, RANDBETWEEN(1, MAX(A:A)) + n, 1) 
0
F--
  • 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_フィールドに「refresh」などの名前を入力し、_Save macro in_ボックスでスプレッドシートを選択し、Saveをクリックしてモジュールを入力します「movies」などの名前で、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ボックスのエントリを、前に使用したモジュール名( "movies"など)が表示されるまで展開し、クリックします。
  • _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_をオフにして非常にクリーンにすることができます。外観(次に新しい空白のスプレッドシートを作成するときに、これらを元に戻す必要がある場合があります)
  • スプレッドシートを保存します
  • ???
  • 利益

Movie Chooser