Excel VBA質問箱 IV

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

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


32061 / 76734 ←次へ | 前へ→

【49912】データを転記
質問  mega  - 07/6/27(水) 21:59 -

引用なし
パスワード
   こんばんは。
いつも勉強させていただいております。

いい方法があれば教えていただきたく
書かせていただきました。よろしくお願いいたします。

全データ.xls sheet名data (情報の期間は2007年4月から2008年3月)                        
A    B    C     D     E    F    G        N
    NO.    2007年4月    2007年5月    2007年6月    2007年7月    2007年8月    ・・・    2008年3月
済    11    0    0    160    0    0        0
変更    11    0    0    0    150    0        0
済    13    210    250    0    0    300        0
変更    13    0    410    0    0    300        0
済    16    250    0    0    0    0        0
済    17    0    0    0    0    0        0

11.xls                        
sheet3                        
A    B    C     D     E        L
2007年6月    2007年7月    2007年8月    2007年9月    2007年10月    ・・・    2008年5月
160    0    0    0    0        
                        
sheet1                        
A    B                    
番号NO.    11                    
                        
13.xls                        
sheet3                        
A    B    C     D     E        L
2007年4月    2007年5月    2007年6月    2007年7月    2007年8月    ・・・    2008年3月
210    250    0    0    300        0
                        
sheet1                        
A    B                    
番号NO.    13                    

下記のコードは11.xlsや13.xlsの各モジュールに書いています。
シート1のB1セルの番号が全データ.xlsのB列にあり、かつA列が"済"になっている
ものを探す

全データのC1:N1と各xlsのシート3のA1:L1の月があったところの下に
データを入力させる

ことをしています。

(各エクセルのシート3は始まり月が違いますが
1年分しか書きません。)

しかし、全データのエクセルがかなり大きい容量で
開くのに1分ほどかかってしまいます。
どうにか時間を短縮させるか
全データ.xlsを開かずにデータを写す・・などということは
できるのでしょうか?


Sub 参照()
 Dim WS As Workbook
 Dim i As Integer
 Dim montharray As Variant
 Dim TheNO As Long
 Dim R, C As Range
 Dim MR As Variant
 
  
 Set WS = Workbooks.Open("C:\document and settings\ddd\my documents\4204.xls")
 
 With Worksheets("data")
  For i = 0 To 11
   montharray = Array("2007年4月", "2007年5月", "2007年6月", "2007年7月", "2007年8月", "2007年9月", _
          "2007年10月", "2007年11月", "2007年12月", "2008年1月", "2008年2月", "2008年3月")
    
   .Cells(1, i + 3).NumberFormatLocal = "yyyy年m月"
  Next i
 End With
 
 TheNO = ThisWorkbook.Worksheets("Sheet1").Range("B1").Value
 
 For Each R In WS.Worksheets("data").Range("B2:B800")
   If R.Value = TheNO Then
    
     If R.Offset(, -1) = "済" Then
      For Each C In WS.Worksheets("data").Range("C1:N1")
      
       With ThisWorkbook.Worksheets("Sheet3")
         MR = Application.Match((C.Value), .Range("A1:L1"), 0)
          If Not IsError(MR) Then
           .Cells(2, MR).Value = WS.Worksheets("data").Cells(R.Row, C.Column).Value
          End If
       End With
      Next
     End If
   
   End If
 Next


End Sub

4 hits

【49912】データを転記 mega 07/6/27(水) 21:59 質問
【49914】Re:データを転記 neptune 07/6/27(水) 22:14 発言
【49916】Re:データを転記 mega 07/6/27(水) 22:25 発言
【49923】Re:データを転記 neptune 07/6/28(木) 9:30 発言
【49929】Re:データを転記 mega 07/6/28(木) 21:38 発言
【49933】Re:データを転記 neptune 07/6/28(木) 22:33 発言
【49995】Re:データを転記 mega 07/7/2(月) 20:53 お礼
【49915】データを転記 mega 07/6/27(水) 22:19 質問

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