質問: excel vbaでアクティブなシート(sheet3)am列のマイナスの数値を探し、その行のa列の値 excel vbaでアクティブなシート(sheet3)am列のマイナスの数値を探し、その行のa列の値、c列の値、そのマイナスの値をワークシート4のa列、b列、c列にそれぞれ転記したいです。 どなたかお力添えお願いします! ワークシート4の1行目は日付けにしてあります。 また、次にその作業をした時には、シートのd列からといったように3列毎ずらしていきたいのですが、可能でしょうか?
回答: こんにちは、 出力行が不明です。 取得したデータは、纏めて出力すれば良いのでしょうか? (ワークシート4の2,3,・・・行) 取敢えずサンプル sub a() 'excel vbaでアクティブなシート(sheet3)am列のマイナスの数値を探し、 'その行のa列の値、c列の値、そのマイナスの値をワークシート4のa列、b列、c列にそれぞれ転記したいです。 dim i as long, n as long dim maxrow as long dim ary() with activesheet 'sheets("sheet3") with .usedrange maxrow = .rows(.rows.count).row end with for i = 1 to maxrow if isnumeric(.cells(i, "ax").value) and sgn(.cells(i, "ax").value) = -1 then redim preserve ary(2, n) ary(0, n) = .cells(i, "a").value ary(1, n) = .cells(i, "c").value ary(2, n) = .cells(i, "ax").value n = n + 1 end if next end with with sheets("ワークシート4") for i = 1 to .cells(1, columns.count).end(xltoleft).column step 3 if .cells(rows.count, i).end(xlup).row = 1 then n = i exit for end if next if ubound(ary, 2) > 0 then .cells(2, n).resize(ubound(ary, 2) + 1, 3) = application.transpose(ary) end if end with end sub アクティブなシート(sheet3)でない場合、問題が生じるので with activesheet をwith activesheet sheets("sheet3") としてください 取得行、出力行を同じにする場合は、配列に値を入れるところで (取得時に)ワークシート4に書き込むのが簡単かもしれません