WINME、エクセル97です。

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

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

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

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が見つからない時は、教えて!gooで質問しましょう!

今、見られている記事はコレ!

  • 縦書きと横書きはどちらが読みやすい?

    普段何気なく読んでいる文章ですが、縦書きか横書きか、意識したことはありますか?制作側としては読み手はどちらの方が読みやすいと思うかはとても大きな問題です。教えて!gooには、 「『横書き』と『縦書き』、...

  • 昭和の日ってどういう日?

    ゴールデンウィーク初日の4月29日は「昭和の日」です。今や平成生まれの人も多い時代ですが、「なぜ昭和の日があるの?」という疑問をもったことはありませんか?和暦を挙げるのなら、大正の日、明治の日、平成の日...

  • Excelの意外な使い方とは?

    会社のパソコンに必ず入っている、と言っても過言ではない、Office系ソフトの「Word」と「Excel」。PCを使う職場にいた方なら、一度は触ったことがあるかと思います。Wordは仕事以外に使う方法がすぐ浮かびそうです...

  • 【料理に最適!!!】自宅で簡単に「真空パック」する方法!

    料理をする人なら、できるだけ食材の鮮度を保ち、より良い状態で美味しく頂きたい、と考える。そこで今回、「教えて!goo」編集部が紹介したいのが、料理を頻繁に行う方にオススメの、真空パック保存法である。必要...

  • もう待ちきれない!おうちでも外でもディズニーハロウィングッズでキャラコーデ!

    ハロウィンまであと1ヶ月あまり。街のあちこちにハロウィンアイテムが並び、見ているだけで心が躍る。そんなハロウィンムードを盛り上げるディズニーハロウィングッズが発売中だ。おうちでも外でもハロウィン気分を...

おしトピ編集部からのゆる~い質問を出題中

お題をもっとみる

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


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ