Excel VBA質問箱 IV

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

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


39562 / 76738 ←次へ | 前へ→

【42286】Re:抽出作業について
回答  飛ばない豚  - 06/9/5(火) 15:39 -

引用なし
パスワード
   ▼通りすがりの達人 さん:
ちょっと勉強を兼ねてコードを作ってみました。

seet3(工事台帳?)がアクティブな状態からの実行を想定してます。


>実は、seet3の工事台帳の物件は500件程度、1物件あたりの設定は1000行
>となっていて、かなりのボリュームになります。
結果どうしたいのかが、いまいち理解できなかったので、もしかすると
とんちんかんなものになってるかもしれません。


Sub sub_sample3()
  'Seet3(工事台帳?から実行)
  Dim myRange As Range
  
  '旧データのクリア
'  Sheets("Seet3").Range("A5:D" & Cells.Rows.Count).ClearContents
  Range("A5:D" & Cells.Rows.Count).ClearContents
  
  With Worksheets("Seet1")
    .Range("A1").AutoFilter  '念の為
    Set myRange = .Range(.Cells(2, 1), _
               .Cells(.Cells.Rows.Count, 1).End(xlUp))
    
    'データの抽出
    .Range("A1").AutoFilter Field:=2, Criteria1:=Range("A1").Value
  End With
  
  'コピー
  On Error Resume Next
  myRange.SpecialCells(xlCellTypeVisible).Copy Range("A5")
  myRange.Resize(, 2).Offset(, 3) _
      .SpecialCells(xlCellTypeVisible).Copy Range("B5")
  On Error GoTo 0
  
  'フィルタ解除
  Worksheets("Seet1").Range("A1").AutoFilter
  
  '累計の式挿入
  Set myRange = Range("C" & Cells.Rows.Count).End(xlUp)
  If myRange.Row <= 4 Then
    MsgBox "抽出データ無し"
    Exit Sub
  ElseIf myRange.Row = 5 Then
    Range("D5").Value = "=C5"
  Else
    Range("D5").FormulaR1C1 = "=RC[-1]"
    Range("D6:D" & myRange.Row).FormulaR1C1 = "=R[-1]C+RC[-1]"
  End If
  
  MsgBox "終了"
  
End Sub


私自身の勉強を兼ねたので、分かりにくい部分があるかもしれませんが、
ご了承下さい。

(^・ω・^)

0 hits

【42265】抽出作業について 通りすがりの達人 06/9/5(火) 10:57 質問
【42266】Re:抽出作業について かみちゃん 06/9/5(火) 11:09 発言
【42270】Re:抽出作業について 通りすがりの達人 06/9/5(火) 11:55 お礼
【42286】Re:抽出作業について 飛ばない豚 06/9/5(火) 15:39 回答

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