WINME、エクセル97です。

ランダム抽出がしたくて、ヘルプを見ましたがなんだかよくわかりません。

ある範囲をドラッグしてそこからランダムに抽出できれば
いいだけなんですが、、、

ご教授よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (11件中1~10件)

1行目に見出しとして曲のテーマが入力されているとします。



そのテーマのセルをWクリックすると、その列の中から選曲して表示します。

選ばれた曲名のセルがアクティブにもなりますので、テーマ行を固定した方が
いいと思います。

「列をWクリックしたとき」というのは出来ないのです。残念!!
でも、テーマをWクリックの方がいいと思いますよ。

これで如何でしょうか。

前のコードを消して次のコードを貼り付けてください。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _
  Cancel As Boolean)
Dim RndRw As Long
If Target.Row > 1 Or _
  Target.Column > Range("IV1").End(xlToLeft).Column Then Exit Sub
Cancel = True
Randomize
RndRw = Int(Rnd() * (Cells(65536, Target.Column).End(xlUp).Row - 1))
Target.Offset(RndRw + 1).Activate
beep: beep: beep
MsgBox "「 " & ActiveCell.Text & " 」 を抽出しました。", _
  vbInformation, "ランダム選曲"
End Sub
    • good
    • 0
この回答へのお礼

できました!理想通りの方法です!こちらの説明が至らないばかりに、何度も質問を付け足すハメになってしまい申し訳ない気持ちです。ja7awuさん、本当にありがとうございました!

お礼日時:2004/03/26 15:44

> アルファベットの列をクリックして、その中からデータをランダムに


> 選んでくれる、というのはないでしょうか。

やはりそうでしたか。現在の曲データの配置が分かれば出来ます。
では、操作性を良くするため、次のことをお聞きします。

・ 曲名が、アルファベット順に列方向に並んでいるのですね。
 (例えば、A列は曲名の読みが A から始まるもので B列は Bから始まるもの)
・ そのアルファベットの見出し行は付いているのですか?
・見出しは何行目で、"A"は何列ですか?
・A~Zまで(無いのがあるかも知れませんが)データがある最後の行がそれぞれ違う
 ということですね。
・もし、見出しがあれば、そのA~Zの任意の見出しをWクリックするとその列から
「ランダムに選曲し表示する」のはどうでしょうか。
・ 見出しが無く、曲名から始まっている場合は、その列のどれかセルをWクリックすると
 その列の中から選曲される というのは、どうですか?

現在、シート上にデータがどのように配置されていて、どのような操作で選曲したい
のかを書いて頂ければ、大抵のことは出来ると思います。


> あと、マクロ確認ダイアログですが、チェックを外すのはちょっと恐いです・・

Excel97の場合は、そのブックだけですので大丈夫だと思います。

Excel2000以降ですと、Excel自体のセキュリティレベルを下げると危険を生じますので
デジタル証明を組み込んでマクロ プロジェクトにデジタル署名を添付することになり
ちょっと面倒です。

この回答への補足

ja7awuさん、なんかすみません。(ここまでしていただけるとは思わなかったので)見出しは、行番号1にA~Oまでテーマを書いてあって、そのテーマにあった曲を下に向けて書いてあります。ですので列AだからAから始まる曲名、とはなってません。各テーマごとに曲数も違い、300の所もあれば10の所もあります。理想は、列(A~O)をWクリックするだけでランダムに選べたら・・とは思っています。お忙しいところご迷惑おかけします。

補足日時:2004/03/25 21:11
    • good
    • 0

出張のため返事送れました。



> 自分でそう質問したのでしょうがありませんが、今思うと数が多い列は
> ドラッグするのが大変でした。

ちょっとこの意味が分かりかねます。
もし、違う方法をご希望であれば、その方法を書いて頂ければ、対処できるもであれば
検討しますが・・・。

> ところで、シートを右クリックして「コードの表示」をクリックしただけで、
> そのブックを開くたびに”今開こうとしているブックにはマクロが含まれています”と
> いうウイルスチェック(?)のダイアログボックスが出ますが、
> これを出さないようにするにはどうすればいいんでしょうか。

Excel97 の場合、メニューから

・[ツール] メニューの [オプション] をクリックし、[全般] タブをクリックします。

・[マクロ ウィルスから保護する] のチェックを外しします。

これで、このブックを開いたとき、マクロ確認ダイアログは出ないと思います。

なお、これは一般のウィルス対策ソフトとは別ものです。

この回答への補足

実際にやってみると曲数が多くて、選ぶたびにドラッグするのが面倒に感じたのですが、質問で「ドラッグした範囲から抽出・・・」と自分が書いたので、ja7awuさんの回答に間違いはないという意味です。アルファベットの列をクリックして、その中からデータをランダムに選んでくれる、というのはないでしょうか。あと、マクロ確認ダイアログですが、チェックを外すのはちょっと恐いです・・

補足日時:2004/03/25 14:48
    • good
    • 0

貴方の質問内容および補足をその通り解釈する限りでは、



> ヘルプ→キーワード→ランダム抽出の中にある”サンプリングダイアログ
> ボックス”が呼び出せればなんとかなるかもしれませんが・・・

では、目的の結果は得られないと思います。(やりたいことが違っていれば別です。)

前レスでは全くの初心者でも解るように書いたつもりですが、再度詳しく書きます。

次の手順でVBA(マクロ)コードを設定します。

・曲名が入力されているシートのシート名タブ(Sheet1とか書いてある所)を
 右クリックして「コードの表示」を指定します。
 そうすると、新しいウィンドウが開かれて、そこに
 Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)

 End Sub
  というコードが表示されていると思いますので、これを消して、代わりにNo.7の
 Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  から
 End Sub
  までのコードをコピーして、同じ所に貼り付けます。

・Alt+ Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。
・メニューから[ツール]-->[マクロ]-->[セキュリティ]で「セキュリティレベル」を
 「中」にして[OK]します。 (Excel97は不要)
・以上で設定完了です。

これで、曲名が入力されているセル範囲をドラッグ選択してください。
マウスの左ボタンを離したとき、その範囲にある曲名が1つランダムに選曲し、
メッセージボックスに表示します。

抽出したデータをどうすればいいのか書いていませんので、勝手にこのように
しましたが、これでどうでしょうか?

違う方法が良ければ、詳細に方法を補足してください。

この回答への補足

できました。自分でそう質問したのでしょうがありませんが、今思うと数が多い列はドラッグするのが大変でした。ところで、シートを右クリックして「コードの表示」をクリックしただけで、そのブックを開くたびに”今開こうとしているブックにはマクロが含まれています”というウイルスチェック(?)のダイアログボックスが出ますが、これを出さないようにするにはどうすればいいんでしょうか。(ウイルスチェック機能を止める方法でなく)

補足日時:2004/03/22 14:51
    • good
    • 0

#4 & #6 ですが、結果は同じですが、次のようにした方が、効率的な


コードになっていますので、宜しかったら、こちらでテストしてみて
ください。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim RndRw As Long
Dim RndCol As Integer
On Error Resume Next
If Target.Count < 2 Or Target.Count > 1000 Then Exit Sub
Randomize
RndCol = Int(Rnd() * Target.Columns.Count)
RndRw = Int(Rnd() * Target.Rows.Count)
MsgBox "「 " & Target.Resize(1, 1).Offset(RndRw, RndCol). _
  Text & " 」 を抽出しました。", vbInformation, "範囲内ランダム抽出"
End Sub

この回答への補足

ja7awuさん、何度もありがとうございます。しかしながらこちらにワープロソフトの知識がないので回答の中の用語すらわかりません。(申しわけない)
ヘルプ→キーワード→ランダム抽出の中にある”サンプリングダイアログボックス”が呼び出せればなんとかなるかもしれませんが、どうやってやればいいんでしょうか。

補足日時:2004/03/21 14:41
    • good
    • 0

#4ですが、先ほどのコードですと、余り広い範囲を選択すると時間が掛かって


しまいますので、選択セル数が 1,000 を超える場合は、抽出を中止するようにしました。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Rng As Range
Dim RndVal As Long
Dim N As Long
Dim PicUp
If Target.Count < 2 Or Target.Count > 1000 Then Exit Sub
RndVal = Int(Rnd() * Target.Count) + 1
For Each Rng In Target
  N = N + 1
  If N = RndVal Then
    MsgBox "「 " & Rng.Value & " 」 を抽出しました。", _
      vbInformation, "範囲内ランダム抽出"
    Exit For
  End If
Next Rng
End Sub
    • good
    • 0

#2です。



私には、まだ意味が解からないです。
「ランダムに曲を選びたい」? Excelの話ですよね?
自分の好きな「曲名」を Excel のシートに入力してあり、そのセルをランダムに選択したい?

  A
1 全てが僕の力になる!
2 Dandelion
3 Wonderful Life
4 ミチシルベ~a road home~

選択してからどうしたいのでしょう。

自動的に何かをさせるには、関数と言うよりマクロ(VBA)になると思いますが、、、
    • good
    • 0

内容からは、次のようなことではないかと解釈します。



「ある範囲をドラッグしてそこから」ですよね。

抽出した値を何処に表示したいのか分かりませんので、取り敢えずここでは、
メッセージボックスに表示することとします。

複数のセルを選択した時点で、その範囲内のセルの値をランダムに1つ抽出し、
メッセージボックスに表示します。

質問どおりですとVBAで処理する方法よりないと思いますが、それで宜しかったら
次の手順でテストしてみてください。

・使用しているシートのシート名タブを右クリックして「コードの表示」を指定します。
・開いたコードウィンドウに下記コードをコピーして貼り付けます。
・Alt+ Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。
・メニューから[ツール]-->[マクロ]-->[セキュリティ]で「セキュリティレベル」を
 「中」にして[OK]します。
・以上で設定完了です。

これで、このシートで2つ以上のセルを選択すると、その中からランダムの1つの値が
表示されます。 現コードは、空白もデータとして扱われます。 

もし、表示する内容をそのセルに設定している表示形式どおりに表示したい場合は、
 MsgBox "「 " & Rng.Value & " 」 を抽出しました。", _
の行を
 MsgBox "「 " & Rng.Text & " 」 を抽出しました。", _
のように変更します。

このようなことで宜しいのでしょうか。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Rng As Range
Dim RndVal As Long
Dim N As Long
Dim PicUp
If Target.Count < 2 Then Exit Sub
RndVal = Int(Rnd() * Target.Count) + 1
For Each Rng In Target
  N = N + 1
  If N = RndVal Then
    MsgBox "「 " & Rng.Value & " 」 を抽出しました。", _
      vbInformation, "範囲内ランダム抽出"
    Exit For
  End If
Next Rng
End Sub
    • good
    • 0

関数を使いたくないということであればVBAでも可能です。



曲名が縦にリストになっているとします。
そのリストのある一定の範囲をカーソルで選択したとき、その中からランダムに曲名をメッセージします。


Sub ランダム抽出()

With Selection '選択されたセル範囲の
行数 = .Rows.Count '行数を取得する
列数 = .Columns.Count '列数を取得する
乱数 = Int((行数 * Rnd) + 1) ' 1 から 行数までの乱数を発生
MsgBox .Cells(1, 1).Offset(乱数 - 1, 0).Value’選択範囲からランダム表示
End With

End Sub
    • good
    • 0

私には質問の意味がわかりません。


何を、何処に、どんなふうに抽出したいのでしょうか?

A1:A5にデータがあるとして、B1にでも

=INDIRECT("A" & INT(RAND()*5+1))

の関数を入れると、再計算のたびにA1:A5の何れかを表示しますが、、、こういうこと?

この回答への補足

あ、えーとアルファベット順に自分の好きな曲を
入力しているんですが、その中からランダムに曲を選びたいなと言うことです。カーソル(でいいんですか?)が
勝手に動いてくれればいいだけなんですけど。関数を知らないとダメなんですか?

補足日時:2004/03/20 21:28
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルで種類を数える関数が無いのは何故?

エクセルで種類を数える関数が無いのは何故なんでしょうか?

エクセルで種類を数えるには、いくつかの関数を組み合わせるのが一般的ですよね?
直接数える関数が無いのは、訳があるんでしょうか?

Aベストアンサー

>>エクセルで種類を数える関数が無いのは何故なんでしょうか?

やっぱり、そういう関数が必要な方が全体からみたら少数派だと、エクセルの開発者たちが考えているからではないかと思います。
また、既存の関数を組み合わせたら、対処可能だから、無理して新しい関数を作る必要性もない、開発の優先順位が低いって判断もあるでしょうね。

私は、エクセルの表を作ったり、エクセルVBAでプログラムを作ったりしますけど、そういう関数が必要になったことが全くありませんし。

Qエクセル97・ワード97・アウトルック97が入ったCD-ROMを小屋から発見しました。何につかえるでしょうか?

小屋の中を整理していたら7年前に買った
エクセル97・ワード97・アウトルック97が入った一枚のCD-ROMを発見しました。
(オフィス○○○○とはどこにも書いてありません)
現在持っている自作パソコンでOEM版のXPホームはあるんですが
エクセルなど高いので買っていませんでしたので
これを気に自作パソコンにインストールしたいと思っています。
そこで質問なんですが。
(1)これはエクセル2003とかにアップグレードすることができるのでし ょうか?
(2)XPでも使えるのでしょうか?
(3)機能的に97は使えるのでしょうか?
(4)その他 何か教えてください

回答お願いします。

Aベストアンサー

追伸です。

http://www.microsoft.com/japan/office/system/upgrade.mspx#EAAA
97はぎりぎりアップグレード版の対象になっているようです。

Qエクセルの関数で

エクセルの関数辞典を見ていたら、CUMPRINC関数というのがありました。
しかし、エクセルの「挿入」→「関数」→関数の分類で「財務」というのを選択したのですが、一覧表に載っていません。
どこに載っているのでしょうか?
どうすればこの関数を使えますか?
ちなみにシートの上でやっても関数の反応をしませんでした。

Aベストアンサー

Yahooで検索してみると、参考URLが引っかかりました。

参考になりませんか?

参考URL:http://money-sense.net/doc/20041215_224257.php

Qランダム数値の表示固定ご教授下さい。

【質問】
「=INT(RAND()*(19-11)+11)」にてセルを作成したのですが、
他のセルを編集しているうちに、どんどん値が変更されていきます。
#当然ですが(^^;)
一度決定されたランダム値を固定する方法はありませんでしょうか?

【背景】
19×19の掛算練習Sheetを作成したいと思っております。

*下はExcelのつもり。。。
|A |B |C |D |E|F |G
1 | RAND × RAND =
2 | RAND × RAND =
3 | RAND × RAND =
4 | RAND × RAND =
5 | RAND × RAND =
6 | RAND × RAND =
7 | RAND × RAND =

上のような物を作成し、『=』の右に答えをタイプしたいのですが、
タイプする毎に問題が変更されていくので困っております。

Aベストアンサー

安直ですが、計算を自動から手動に切り替える方法では駄目でしょうか。
・ツール→オプション→計算方法→手動にチェック→OK

因みに再計算したい場合、F9キー押下して下さい。

Qエクセルの関数 ネスト

エクセルの関数 ネスト

エクセルの関数で、ネストさせるときがあるとおもうのですが、

関数を内側に書いたらよいのか外側に書いたらよいのか分からなくなる時があります。

エクセルの関数に関してわかりやすく書いてあるページなどありますか。

Aベストアンサー

こんばんは

Excel2003までは、ネストが7まで、2007では64までが可能です。
http://www.google.co.jp/search?hl=ja&source=hp&q=excel+%E3%83%8D%E3%82%B9%E3%83%88%E3%80%802003%E3%80%802007&aq=f&aqi=&aql=&oq=&gs_rfai=

「仕様上は可能」でも、複雑なネストは間違いが生じやすいですし、変更もしにくくなります。「出来るだけネストはしない」「適宜、中間結果をセルに出力する」という方法を採った方が、間違いが少なく、柔軟性のあるシステムになると思います。

>エクセルの関数に関してわかりやすく書いてあるページなどありますか。
関数の個別の機能ならば、Webサイトも書籍も多数あるのですが、「組み合わせて使う」というのはその場その場での発想になってしまうと思います。

QMicrosoft Access97抽出条件を使用したレポート作成について

ヘルプを利用して抽出用クエリーやレポート、マクロを作成したのですが、実行してみるとマクロ内の"値の代入"の時点でエラーが出てしまいます。
値の代入で、アイテムに対して可視を設定するようにヘルプにはあるのですが、この設定では正しく作動しません。
どのようにすれば正しく作動するのか教えて頂きたいのですがよろしくお願いいたします。

Aベストアンサー

そのマクロはレポートの印刷時(またはフォーマット時)イベントで指定しているのでしょうか?何かのコントロールの値によって可視を切り替えしているのでしょうか。コントロールの値などによって切り替えしているのでしたら、そのコントロール名がレポート上にありますか?

単純な処理だと思いますので、マクロでも可能ですが、逆にVBAで書いても簡単だと思いますよ。

Qエクセル関数の解読サイトなんてありますか?

エクセル関数の解読サイトなんてありますか?

いつもお世話になっております<(_ _)>

エクセルファイルに関数の入った数式が入力されています。
セルごとに複数の関数が入っていますが、私にはちっともわかりません。

そこで質問です。
こんなとき「エクセル関数を解読」してくれるようなサイトってありませんか?

たとえば検索窓があってそこに「=SUM(S1:S13)」わからなくて困っている関数式を入力。
すると答えの別ボックスに「S1~S13までの数値の合計」と出てくるようなサイト。

それに近いサイトでも良いので知っている方がいらっしゃればぜひ、教えてください<(_ _)>

Aベストアンサー

もし、

=IF(E14="","",IF(O14="",(IF(E14>"18:00"*1,"18:00",E14)-IF(C14<="8:00"*1,"8:00",C14))*24*1300,(IF(E14>"18:00"*1,"18:00",E14)-IF(C14<="8:00"*1,"8:00",C14))*24*1625))

だったら、どういう文章が出て欲しいのでしょうか?

もしE14が空白だったら、
 空白、
そうじゃなかったから、
 もしO14が空白だったら、
  (もしE14が18:00より大きかったら18:00、そうじゃなかったらE14)-(もしC14が8:00以下だったら8:00、そうじゃなかったらC14)×24×1300
 そうじゃなかったら、
  (もしE14が18:00より大きかったら18:00、そうじゃなかったらE14)-(もしC14が8:00以下だったら8:00、そうじゃなかったらC14)×24×1625

って感じですか?
数式をそのまま読解したほうが解りやすくないですか?

Qエクセルで、0を含むセルを除外してランダム抽出を行いたい

次のようなルールでランダム抽出するシステムを作りたいのです。
1 AからC(14から16)各列に3つの数字があります。
2 18行目に各列に配置された3つの数字のランダムを表示させます。
  関数は次のとおりです。例としてA行
  =INDEX(A14:A16, RANDBETWEEN(1,3))
3 ただし、B、C行には0が含まれており、0は表示させません。
4 次にランダムで抽出されたA18, B18, C18の中からさらにランダムで1数字を選び出したい。
  そこで次のような関数を導入しました。
  =INDEX(A18:C18,RANDBETWEEN(1,3))
  
  ただし、この関数ですと図のようにCの0が選択される可能性があります。
 
目的は
 ランダムに抽出されたAからC列の数字のうち、0を除くものだけで再度ランダム抽出を行いたい
ということになります。

 何か良い案はありませんでしょうか?ご指南お願い申し上げます。

Aベストアンサー

こんな感じでどうでしょう。
①A18:C18の中から、ゼロより大きい個数を数えます。
②1から上記①までの範囲で乱数を発生させます。
③A18:C18から②乱数番目の数字を表示します。
ちなみに、すべてゼロの場合は表示するものが無いのエラーになります。

=LARGE(A18:C18,RANDBETWEEN(1,COUNTIF(A18:C18,">0")))

Qエクセル関数を、書き写して分析できるツールはある?

タイトルの件、質問します。

エクセルの関数を分析する際に、エクセルの数式バーや、セルに入っている関数を
F2を教えて見るのでは、見にくい場合があります。

現在は、私は、メモ帳に関数をコピーして、分析したり、修正したりしています。
エクセルの機能or他ソフトで、関数を分析できるツールはあるのでしょうか??

【エクセルバージョン】
2003、2007

Aベストアンサー

難解な数式を理解したいとき,最も便利に利用できるのは,2003ではツールメニューのワークシート分析にある「数式の検証」です。
2007では数式タブにあります。

メンドクサイ数式のセルで数式の検証を使い,どの関数やどのカッコから計算が進んでいくのかを1ステップずつトレースして理解します。また意図しない結果がどの段階で発生しているのか追跡します。

このやり方は勿論間違った数式(意図しない結果が出てきた場合)を追跡するのにも使いますが,むしろ誰かに教わった「正しい数式」を理解する時に便利な方法です。
そもそも計算が通っていない(たとえばカッコの対応が間違えていて,Enterしても受け付けてくれないようなミスをしている場合)には使えません。



また,数式バーの中で数式の「中」にカーソルを入れて左右の矢印キーでカーソルを動かしていったときに,「(」や「)」をまたいだ瞬間に,対応する「閉じカッコ」「始まりのカッコ」が色つきで強調表示されるのを確認しながら,カッコの対応がまちがえてないかなどを調べるのも簡易な良い方法です。


あまり使わない方法ですが,数式の中で適宜ALT+Enterを打って「セル内改行」してしまい,数式を縦に分解して書いてみるのも整理しやすい方法のひとつです。

難解な数式を理解したいとき,最も便利に利用できるのは,2003ではツールメニューのワークシート分析にある「数式の検証」です。
2007では数式タブにあります。

メンドクサイ数式のセルで数式の検証を使い,どの関数やどのカッコから計算が進んでいくのかを1ステップずつトレースして理解します。また意図しない結果がどの段階で発生しているのか追跡します。

このやり方は勿論間違った数式(意図しない結果が出てきた場合)を追跡するのにも使いますが,むしろ誰かに教わった「正しい数式」を理解する時に便利...続きを読む

Qランダムに抽出

例えば、「1~20までの数の中からランダムに3つの数字を抜き出す」っていうのはエクセルの関数でできるんでしょうか?
もしできれば教えて下さい。

Aベストアンサー

もし一度使った数値を再度使えるのであれば、下記式を任意の3つのセルに入れたその結果です。
=INT(RAND()*20+1)

もし一度使った数値を使えないとすると、一例になると思いますが、下記のようにします。
(1)A3セルへ「=A2+1」を入力。
(2)A3セルをA4セル~A22セルへコピー。
(3)A1セルへ「21」を入力。
(4)B1セルへ「=A1-1」を入力。
(5)B2セルへ「=INDEX(A$3:A$22,INT(RAND()*B1+1))」を入力。
(6)B3セルへ「=IF(A3>=B$2,A4,A3)」を入力。
(7)B3セルをB4セル~B22セルへコピー。
(8)B列をC列,D列へコピー。
・B2セル~D2セルの結果がご質問の内容の結果となります。

以上でいかがでしょうか。


人気Q&Aランキング

おすすめ情報