Excel VBA質問箱 IV

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

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


12538 / 13646 ツリー ←次へ | 前へ→

【10008】excel(デ−タ抽出) 安藤聖一 03/12/29(月) 9:52 質問
【10009】Re:excel(デ−タ抽出) ぴかる 03/12/29(月) 13:06 回答
【10035】LOOKUP関数で こう 04/1/4(日) 14:41 発言
【10037】Re:excel(デ−タ抽出) banboo 04/1/4(日) 16:07 お礼
【10020】Re:excel(デ−タ抽出) Hirofumi 03/12/30(火) 14:32 回答
【10023】Re:excel(デ−タ抽出) Kein 03/12/31(水) 14:57 回答
【10027】Re:excel(デ−タ抽出) banboo 03/12/31(水) 19:27 お礼
【10025】Re:excel(デ−タ抽出) Jカーター 03/12/31(水) 15:36 回答
【10026】Re:excel(デ−タ抽出) banboo 03/12/31(水) 19:23 お礼

【10008】excel(デ−タ抽出)
質問  安藤聖一 E-MAIL  - 03/12/29(月) 9:52 -

引用なし
パスワード
   A B  C D E  F G H  I  J  K L  M  N  O  P
1時刻 L5 L10 L50 L90 L95 LEQ
212:00 70 71 72 73 74 75    12:00 70 71 72 73 74 75
312:10 69 70 71 72 73 74    13:00 70 71 72 73 74 75 
412:20 69 70 71 72 73 74    14:00 70 71 72 73 74 75
512:30 90 91 92 93 94 95      
612:40 60 61 62 63 64 65           ↑  
712:50 75 76 77 78 79 80       抽出後のデ−タ
813:00 70 71 72 73 74 75
913:10 69 70 71 72 73 74
1013:20 69 70 71 72 73 74
1113:30 69 70 71 72 73 74
1213:40 75 76 77 78 79 80
1313:50 60 61 62 63 64 65
1414:00 70 71 72 73 74 75
1514:10 60 61 62 63 64 65
1614:20 90 91 92 93 94 95
1714:30 60 61 62 63 64 65
1814:40 90 91 92 93 94 95

 以上のようにデ−タが入力されていて、B列に入力されている時刻で
12:00、13:00、14:00の行でA2:H2、A8:H8、A14:H14、
を抽出してJ列からP列に抽出する方法を教えて頂きたいのですが。
 

【10009】Re:excel(デ−タ抽出)
回答  ぴかる  - 03/12/29(月) 13:06 -

引用なし
パスワード
   安藤聖一さん、こんにちは。

一般機能のVLOOKUP関数で出来るかもしれませんね。
的外れだったら、スンマセン。

【10020】Re:excel(デ−タ抽出)
回答  Hirofumi E-MAIL  - 03/12/30(火) 14:32 -

引用なし
パスワード
   以下を標準モジュールに記述して下さい
データの有るシートをアクティブにして実行して下さい

Public Sub TimeExtraction()

  Dim i As Long
  Dim j As Long
  Dim wksData As Worksheet
  
  '画面更新の停止
  Application.ScreenUpdating = False
  
  'データの有るシートの参照を設定(コードではアクティブシート)
  Set wksData = ActiveSheet
  
  'データシートに就いて
  With wksData
    '書き込み行を2行目からに設定
    j = 2
    '読み込む行を2行目から最終行まで繰り返す
    For i = 2 To .Cells(65536, 2).End(xlUp).Row
      'もし、時刻の分が0なら
      If Minute(.Cells(i, 2).Value) = 0 Then
        'セルのB列から7列をCopyしてセルのJ列に張り付け
        .Cells(i, 2).Resize(, 7).Copy _
            Destination:=.Cells(j, 10)
        '書き込み行を更新
        j = j + 1
      End If
    Next i
  End With
  
  'データの有るシートの参照を破棄
  Set wksData = Nothing
  
  '画面更新を再開
  Application.ScreenUpdating = True
  
End Sub

【10023】Re:excel(デ−タ抽出)
回答  Kein  - 03/12/31(水) 14:57 -

引用なし
パスワード
   フィルターを使ってみました。

Sub JUST_Data()
  Dim MyR As Range
 
  Set MyR = Range("B2", Range("H65536").End(xlUp))
  Application.ScreenUpdating = False
  Range("B2", Range("B65536").End(xlUp)) _
  .Offset(, 25).Formula = "=IF(MINUTE(B2)=0,1,"""")"
  Range("AA:AA").AutoFilter 1, "=1"
  MyR.SpecialCells(12).Copy
  ActiveSheet.AutoFilterMode = False
  Range("J2").PasteSpecial
  Range("AA:AA").ClearContents
  With Application
   .CutCopyMode = False
   .ScreenUpdating = True
  End With
  Set MyR = Nothing
End Sub

【10025】Re:excel(デ−タ抽出)
回答  Jカーター  - 03/12/31(水) 15:36 -

引用なし
パスワード
   こんにちは。
フィルタオプションはどうでしょう?
--------------------------------------------------------------------
Sub JTmp()
  Dim RngA As Range
  Dim RngC As Range
  Dim RngP As Range
  With Sheets("Sheet1")
    Set RngA = .Range("A1").CurrentRegion
    Set RngC = .Range("IV1:IV2")
    Set RngP = .Range("J1").Resize(, RngA.Columns.Count)
  End With
  
  RngP.Value = RngA.Rows(1).Value
  RngC(1).Clear
  RngC(2).FormulaR1C1 = "=MINUTE(" & RngA(1).Value & ")=0"
  RngA.AdvancedFilter xlFilterCopy, RngC, RngP
  Union(RngC, RngP).ClearContents
  RngC.Parent.UsedRange
  
  Set RngA = Nothing
  Set RngC = Nothing
  Set RngP = Nothing
End Sub

違ったらすいません。

【10026】Re:excel(デ−タ抽出)
お礼  banboo  - 03/12/31(水) 19:23 -

引用なし
パスワード
    カ−タ−さん、ありがとうございます。
参考にさせて頂きます。

 これからも宜しくお願いします。

 bannbooより

【10027】Re:excel(デ−タ抽出)
お礼  banboo  - 03/12/31(水) 19:27 -

引用なし
パスワード
    Keinさん、ありがとうございます。
参考にさせて頂きます。

 bannboo

【10035】LOOKUP関数で
発言  こう E-MAIL  - 04/1/4(日) 14:41 -

引用なし
パスワード
   ぴかるさん、こんにちわ。お久しぶりです。
安藤さん(banbooさん?)からレスが無いようなのでフォローです。^^;

>一般機能のVLOOKUP関数で出来るかもしれませんね。
LOOKUP関数で可能ですね。

>A B  C D E  F G H  I  J  K L  M  N  O  P
>1時刻 L5 L10 L50 L90 L95 LEQ
>212:00 70 71 72 73 74 75    12:00 70 71 72 73 74 75
>312:10 69 70 71 72 73 74    13:00 70 71 72 73 74 75 
>412:20 69 70 71 72 73 74    14:00 70 71 72 73 74 75
K2セルに「=LOOKUP(J2,A$2:A$18,B$2:B$18)」で、あとはL2,M2・・・に
コピーすればOKです。

#本当は各時刻のデータの集計を行いたいのでは...?

【10037】Re:excel(デ−タ抽出)
お礼  banboo  - 04/1/4(日) 16:07 -

引用なし
パスワード
   ぴかるさんこんにちは、

問題は解決できました、ありがとうございます。

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