Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


69547 / 76732 ←次へ | 前へ→

【11703】Re:ランダムに、データを抽出する方法
回答  りん E-MAIL  - 04/3/15(月) 8:29 -

引用なし
パスワード
   みみん さん、おはようございます

>    A  B  C  D  E  F  G  H  I
> 1  あ  あ  あ  あ     い  い  い  い
> 2  う  う  う  う     え  え  え  え
> ・  ・  ・  ・  ・     ・  ・  ・  ・
> ・  ・  ・  ・  ・     ・  ・  ・  ・
><マクロ実行結果>
>(例)
>    AA  AB  AC  AD  AE
> 1   え   え   え   え   え

なんでひとつ多いの?(;_; ?

まあ、とりあえず。
SpecialCellsで、文字(数値含む、数式は含まない)のセルを取り出して、Randでセルをひとつ選んだあとでグループを判定しています。

Sub test2()
  Dim Cmax&, Cpos&, Crnd& '& = as Long
  Dim Rpos&
  Dim r1 As Range
  'Specialcellsは失敗するとエラーになるのでスキップつけておく
  On Error Resume Next
  '最大横に5組まで対応 aaaa iiii uuuu eeee oooo
  '文字、数値で入っているセルのみが対象
  Set r1 = ActiveSheet.Columns("A:Y").SpecialCells(xlCellTypeConstants)
  On Error GoTo 0
  If r1 Is Nothing Then
   MsgBox "シートが違ってませんか?", vbExclamation
  Else
   'エリア決定(セル範囲がつながっていない場合に対応)
   Cmax& = r1.Areas.Count
   If Cmax& > 1 Then
     Randomize (Now)
     Crnd& = Int(Cmax& * Rnd + 1)
     Set r1 = r1.Areas(Crnd&)
   End If
   'セル決定
   Cmax& = r1.Count
   Randomize (Now)
   Crnd& = Int(Cmax& * Rnd + 1)
   'そのブロックの最初の行番号
   With r1.Cells(Crnd&)
     Rpos& = .Row 'インデックスの示す行
     Cpos& = (.Column \ 5) * 5 + 1 'ブロックの左はし
   End With
   '
   '結果をAA3:AA6に出す
   With ActiveSheet
     .Range("AA1:AD1").Value = .Range(.Cells(Rpos&, Cpos&), .Cells(Rpos&, Cpos& + 3)).Value
   End With
  End If
End Sub

こんな感じです。

> やはり、増えたら増えた分書き換えなくていけないということですよね・・。
 Y列より右に行かなければ大丈夫です。

> 昔ベーシックならやったことあるぞっと、
> 思ったんですが、全然ちがうんですね;;
 同じです。私も最初はN88BASICでしたよ。%や&はその頃の名残です。
VB.Netは全然違うという話ですが。

> II%とはなんぞや、と調べたいときに、
> 見にいけるページとかないでしょうか(><)
 とりあえずヘルプで調べる癖をつければいいのでは?
 トップのページから、質問箱V3,そこから質問箱V2を見に行くことができます。そちらのログも見てみてくださいね。いろんな質問や回答があって面白いですよ。

型宣言文字について (V3質問箱)
http://www21.tok2.com/home/vbalab/bbs/c-board.cgi?cmd=one;no=7911;id=Excel

お暇がありましたら、こちらもどうぞ (V3石鹸箱)
http://www21.tok2.com/home/vbalab/bbs/c-board.cgi?cmd=ntr;tree=717;id=

3 hits

【11670】ランダムに、データを抽出する方法 みみん 04/3/13(土) 23:05 質問
【11671】Re:ランダムに、データを抽出する方法 アイエネス 04/3/13(土) 23:23 回答
【11675】Re:ランダムに、データを抽出する方法 みみん 04/3/14(日) 7:12 質問
【11676】Re:ランダムに、データを抽出する方法 みみん 04/3/14(日) 7:15 発言
【11678】Re:ランダムに、データを抽出する方法 りん 04/3/14(日) 9:36 回答
【11701】Re:ランダムに、データを抽出する方法 みみん 04/3/15(月) 5:35 質問
【11703】Re:ランダムに、データを抽出する方法 りん 04/3/15(月) 8:29 回答
【11737】Re:ランダムに、データを抽出する方法 みみん 04/3/15(月) 16:59 お礼

69547 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free