• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルマクロの条件分岐を列単位で行う)

エクセルマクロで列単位の条件分岐を行う方法について

このQ&Aのポイント
  • エクセルマクロで列単位の条件分岐を行う方法について考えています。
  • 具体的には、特定の条件に基づいて列にある数値を判定し、セルに入力されている銘柄コードと時系列データをネットから取得したいと思っています。
  • 150銘柄ほどのデータを一括で処理する方法を知りたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • weboner
  • ベストアンサー率45% (111/244)
回答No.2

Sub Macro1() MaxRow = Range("C1").End(xlDown).Row For Each r In Range("C2").Resize(MaxRow) If r > 0 Then 'ここにやりたい処理を挿入 'C列のデータが1以上のセルが r で利用できます ' r.Offset(0,-2).Value で銘柄コードを取得できます End If Next End Sub

oretower
質問者

お礼

早速のご回答誠にありがとうございます。 >For Each 「繰り返す」というものがあったのですね。 ご教示ありがとうございます! 具体例も書いていただき非常に助かりました!

その他の回答 (1)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! 質問文を読む限りでは「オートフィルタ」が一番簡単だと思います。 わざわざVBAでやる必要はなく手を動かすのが手っ取り早いのではないでしょうか? C列をキーに 「0より大きい」でフィルタをかけ、表示されているデータのみを別Sheetにコピー&ペーストする。 といった感じではどうでしょうか? ※ どうしてもVBAで!というコトであれば、上記の一連の操作をコードにすると ↓のような感じですかね? 元データはSheet1にあり、Sheet2にコピー&ペーストするコードの一例です。 Sub Sample1() Dim lastRow As Long, wS As Worksheet Set wS = Worksheets("Sheet2") wS.Cells.Clear With Worksheets("Sheet1") lastRow = .Cells(Rows.Count, "A").End(xlUp).Row .Range("A1").AutoFilter field:=3, Criteria1:=">0" .Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy wS.Range("A1") .AutoFilterMode = False End With End Sub こんな感じでは同でしょうか?m(_ _)m

oretower
質問者

お礼

早速のご回答誠にありがとうございます。 仰る通りフィルタをかけるのが手っ取り早く、大した手間ではないのですが、 出来る限り作業を機械的に行いたいと思っているのです。 ボタン一つで必要な情報をすべて取得して、 あとは株の売買の注文ボタンを押すだけ、 というのを理想としておりましたので。 ご提示いただいた別シートへのコピーは 今回の質問とは違うのですが、ちょうど自分が別に考えていた株情報取得に役立つ内容なので ぜひ使わせていただきます。 ご回答ありがとうございます!

関連するQ&A

専門家に質問してみよう