Excel VBA質問箱 IV

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

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


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

【23395】絶対参照と相対参照について 初心者です 05/3/21(月) 3:43 質問[未読]
【23399】Re:絶対参照と相対参照について ponpon 05/3/21(月) 12:15 発言[未読]
【23401】Re:絶対参照と相対参照について G-Luck 05/3/21(月) 13:44 発言[未読]

【23395】絶対参照と相対参照について
質問  初心者です  - 05/3/21(月) 3:43 -

引用なし
パスワード
   VBA初心者です。よろしくお願いします。
SUMIF関数で別のシートの合計を集計しています。検索範囲をマクロで列を挿入して増やしていきたいのですが、SUMIF関数の検索範囲を絶対参照にしてもsheet1の列を挿入した分検索範囲もずれていきます。マクロで列を挿入すると絶対参照は有効ではないのでしょうか?相対参照でも同じ結果になります。
ご指導よろしくお願いします。
=SUMIF(sheet1!$F$8:$F$100,集計!$B41,sheet1!$N$8:$N$100)

【23399】Re:絶対参照と相対参照について
発言  ponpon  - 05/3/21(月) 12:15 -

引用なし
パスワード
   ▼初心者です さん:
ponponです。こんにちは。

よく意味がわからないのですが、・・・

>=SUMIF(sheet1!$F$8:$F$100,集計!$B41,sheet1!$N$8:$N$100)

以下は、アクティブシートのA1にSUMIF関数の結果を出力します。

Sub test()
  Dim 範囲 As Range
  Dim 検索条件 As String
  Dim 合計範囲 As Range

  Set 範囲 = Worksheets("sheet1").Range("F8", Range("F65536").End(xlUp))
    検索条件 = Worksheets("集計").Range("B41").Vlue
  Set 合計範囲 = Worksheets("sheet1").Range("N8", Range("N65536").End(xlUp))
 
  Range("A1").Formula = WorksheetFunction.SumIf(範囲, 検索条件, 合計範囲)
End Sub

【23401】Re:絶対参照と相対参照について
発言  G-Luck  - 05/3/21(月) 13:44 -

引用なし
パスワード
   初心者ですさん,ponpon さん こんにちは、

整理させていただきますと、
あるセルに、
=SUMIF(sheet1!$F$8:$F$100,集計!$B41,sheet1!$N$8:$N$100)
と記入されていて、F8:F100または、N8:N100より前(A:A列とか)に列を挿入しても
=SUMIF(sheet1!$G$8:$G$100,集計!$B41,sheet1!$O$8:$O$100)
とならずに
=SUMIF(sheet1!$F$8:$F$100,集計!$B41,sheet1!$N$8:$N$100)
のままであってほしい。

これは、VBAで列挿入しても、Excel上で挿入しても、ずれてしまうと思います。
回避策としては、INDIRECT関数を使ってみてはどうでしょうか?

挿入>名前>定義
で、たとえば、
名前
 範囲
参照範囲
 =INDIRECT("sheet1!$F$8:$F$100")

名前
 検索条件
参照範囲
 =INDIRECT("集計!$B41")

名前
 合計範囲
参照範囲
 =INDIRECT("sheet1!$N$8:$N$100")

と定義して、
=SUMIF(参照範囲,検索条件,合計範囲)
としてみてはどうですか?

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