Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7全般 : Excel 2013)
WorksheetFunction.Sumを使用した加算に関して
投稿日時: 18/10/15 17:02:57
投稿者: itk

Sheet1
    B列 C列 D列
 1 NODE FOOT- RF1
 2 NOTE
 3
 4 100021 1.11E-09
 5 100042 1.40E-09
 6 100063 1.45E-09
 7 100084 1.50E-09
 8 100105 1.51E-09
 9 100126 1.52E-09
    ・
    ・
21 NODE FOOT- RF1
22 NOTE
23
24 100021 1.72E-13
25 100042 2.29E-13
26 100063 2.51E-13
    ・
    ・
40 THE ANALYSIS HAS BEEN COMPLETED
    ↑ ↑ ↑
    B列 C列 D列
 
このようなexcelシートに対して,
NODE FOOT- RF1が出てくる度にFOOT-の下の値を合計し,シート2のB列に書き出すという作業を
THE ANALYSIS HAS BEEN COMPLETEDが出てくるまで繰り返すというマクロを組んでいます.
 
 
現状のマクロが
 
'RF積分値をSheet2に書き出し
f=1
g=2
h=1
 
 Do
 
  If Sheet1.Cells(f, 2) = "NODE" And Sheet1.Cells(f, 3) = "FOOT-" And Sheet1.Cells(f, 4) = "RF1" Then
   
        Worksheet1Function.sum(Sheet1.Range(Sheet1.Cells(f + 3, 3), Sheet1.Cells(f + 8, 3))) = Sheet2.Cells(g, 2)
        
       f = f + 1
       g = g + 1
           
  End If
          f = f + 1
          h = h + 1
    
        If Sheet1.Cells(h, 2) = "THE" And Sheet1.Cells(h, 3) = "ANALYSIS" And Sheet1.Cells(h, 4) = "HAS" Then
 
           Exit Do
     
        End If
 Loop
 
End Sub
 
というコードを書いているのですが,NODE FOOT- RF1を検出した際の計算である,
Worksheet1Function.sumの計算を行おうとすると
 
「実行時エラー 424 オブジェクトが必要です」というエラーが出てしまいます.
 
何が問題かわかる方いらっしゃいますでしょうか.
 
*ステップ実行時のWorsheet1Functionの値はEmpty値となっています.
 
 
 

投稿日時: 18/10/15 17:11:02
投稿者: itk

100021,100042のような数字はB列
  
1.11E-09, 1.40E-09のような数字はC列で
  
D列のRF1の下には数字は存在しないです.

回答
投稿日時: 18/10/15 17:30:34
投稿者: 半平太

>NODE FOOT- RF1を検出した際の計算である,
>Worksheet1Function.sumの計算を行おうとすると
 
それって、この部分ですか?
      ↓

Worksheet1Function.Sum(Sheet1.Range(Sheet1.Cells(f + 3, 3), Sheet1.Cells(f + 8, 3))) = Sheet2.Cells(g, 2)

少なくとも形はこうですけど? (それで本当に動くのか分かりませんが)
     ↓
Sheet2.Cells(g, 2) = WorksheetFunction.Sum(Sheet1.Range(Sheet1.Cells(f + 3, 3), Sheet1.Cells(f + 8, 3)))        ~↑~

 代入先は左辺にする。あと Worksheet1Function ← じゃないです。(1が余分)

投稿日時: 18/10/15 18:09:56
投稿者: itk

>半平太さん
 
WorksheetFunctionにすると式としてローカルウインドウに表示されないのですが,これは通常なのでしょうか.
さらに,この書き方の場合,
 
If Sheet1.Cells(f, 2) = "NODE" And Sheet1.Cells(f, 3) = "FOOT-" And Sheet1.Cells(f, 4) = "RF1" Then
 
でNODE FOOT- RF1が検出されなくなってしまいます.
 
 
worksheet1functionにするとローカルウインドウにも表示され,NODE FOOT- RF1も検出されます.
 

投稿日時: 18/10/15 18:15:35
投稿者: itk

>半平太さん
 
すみません自分の確認不足でした.
 
worksheetFunction.Sumにすることでうまくいきました.
 
ご指摘いただき有難うございました.