パソコンカレッジ スタッフのひとりごと

パソコンスクールのスタッフが、
初心者から上級者まで役立つ情報をお伝えします。

一つ飛びにセルを選択する(Excel2002以降)

2010-02-05 09:02:46 | ExcelVBA
さて、今日は、生徒さんの要望を取り上げます。

友人から、以下のようなデータを受け取るらしいのですが、
気温と湿度が交互になっているとのこと。

そこで、気温のデータのセルを簡単に選択できないか、とのリクエストです。





「なるほど、それなら、ひとつおきにセルを選択できれば、気温だけを選択できるし、
湿度だけを選択することもできますね。」

「選択したら、コピーをして、どこかに貼り付けると、データが連続するんですよ。」

「そうすると、気温のデータと湿度のデータにきちんとわけられますね。」

「何とかなりますか。手動では、手間がかかるんですよね。」

「分かりました。こんな時は、やはり、VBAを使いましょう。」



そんなわけで、さっそくコードを書いてみましょう。


ALT + F11 で、VisualBasicEditorを起動します。
「挿入」→「標準モジュール」をクリックします。
これで、コードを記述する準備が整いました。

それでは、次のようにコードを書いてみてください。


Sub 飛び石選択()
    Dim a() As Variant
    Dim TargetColumn As Integer
    Dim StartRow As Integer
    Dim LastRow As Integer
    Dim s As String
    Dim i As Integer
    
    '選択された列の番号をアルファベットに変換するための配列
    a = Array("0", "A", "B", "C", "D", "E")
    '列番号を取得
    TargetColumn = Selection.Column
    '開始の行番号を取得
    StartRow = Selection.Row
    '終了位置の行番号を取得
    LastRow = Selection.End(xlDown).Row
    '一つおきにセル位置を文字列として設定
    For i = StartRow To LastRow Step 2
        s = s & a(TargetColumn) & i & ","
    Next
    '文字列の最後のコンマを削除
    s = Left(s, Len(s) - 1)
    '下の行頭のコンマを削除すると、
    '生成された文字列を確認できます。
    'MsgBox s
    
    '文字列をセル範囲として使います
    Range(s).Select
End Sub



一応画像も載せておきます。





セルを選択するだけなのに、コードは苦労しました。
なお、今回は、選択されたセルを基準に、下方向に一つ飛びにセルを選択するようにしました。
したがって、まず基準のセルを選択してから、コードを実行してください。


それでは、Excelに切り替えてください。

C2を選択してください。このセルを基準として、下方向にひとつおきにセルを選択します。

それでは、プログラムを実行してみましょう。


Excel2003までは、「ツール」→「マクロ」→「マクロ」とクリックします。
Excel2007は、Altキーを押しながらF8キーを押してください。

今回記述したマクロ(プロシージャ)を選択して、実行ボタンをクリックします。





すると、気温のデータだけ、選択できました。




C3を選択してからこのプロシージャを実行すると、湿度のデータだけを選択することができます。

※データ以外のセルを選択してから実行すると、エラーとなります。
エラー対策は、各自考えてみてくださいね。


だい
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

【おすすめ】

パソコン買ったらまず入れる10のアプリ