Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(指定なし : 指定なし)
マクロ付きのデータベースからデータの取得ができない
投稿日時: 19/09/21 21:07:35
投稿者: mimi1212

先日こちらで教えていただき、
やりたいことができるようになりました。
https://www.moug.net/faq/viewtopic.php?t=78612
 

=IFERROR(AGGREGATE(15,6,[テスト作成.xlsx]オーダー!$S$8:$S$46/([テスト作成.xlsx]オーダー!$P$8:$P$46=$D$1)/([テスト作成.xlsx]オーダー!$O$8:$O$46=$E$1)/([テスト作成.xlsx]オーダー!$C$8:$C$46=$C8)/([テスト作成.xlsx]オーダー!$D$8:$D$46=$D8)/([テスト作成.xlsx]オーダー!$R$8:$R$46=E$5),1),"")
 
 
書き換え後
=IFERROR(AGGREGATE(15,6,[テスト作成.xlsm]オーダー!$S$8:$S$46/([テスト作成.xlsm]オーダー!$P$8:$P$46=$D$1)/([テスト作成.xlsm]オーダー!$O$8:$O$46=$E$1)/([テスト作成.xlsm]オーダー!$C$8:$C$46=$C8)/([テスト作成.xlsm]オーダー!$D$8:$D$46=$D8)/([テスト作成.xlsm]オーダー!$R$8:$R$46=E$5),1),"")
 
 
付け加えをして、マクロ付きのエクセルで保存し、
関数の中のファイル名も書き換えてみたのですが、
値を取得することができなくなりました。
 
マクロが書かれていない拡張子xlsxからは
値を取得できるのですが、
マクロ付きのエクセルファイルのデータベースから
同じ関数が書かれているのに値を取得することができません。
エラー #NUM!
何が起こっているのかわかりません。
どなたか教えていただけますでしょうか。
よろしくお願いいたします.0

回答
投稿日時: 19/09/21 22:03:03
投稿者: 半平太

>マクロが書かれていない拡張子xlsxからは
>値を取得できるのですが、
>マクロ付きのエクセルファイルのデータベースから
>同じ関数が書かれているのに値を取得することができません。
 
にわかに信じられないので、以下の検証をして貰えませんか?
 
拡張子xlsxから正常に値が取得できていることを確認する。
 
次にその状態のまま、拡張子xlsxを「名前を付けて保存する」にして、
「本当なの.xlsm」と言う名前で保存してみてください。
 
すると、数式の参照先が「「本当なの.xlsm」に変わりますが、
今まで取得できていた値が「#NUM!」に変わっちゃうのですか?
 
※そもそも、IFERRORで括っているので、エラーが出るのもおかしい気がしますけども。
 

投稿日時: 19/09/21 23:30:02
投稿者: mimi1212

半平太 さま
ありがとうございます。
 
引用
数式の参照先が「「本当なの.xlsm」に変わりますが、
今まで取得できていた値が「#NUM!」に変わっちゃうのですか?
  
※そもそも、IFERRORで括っているので、エラーが出るのもおかしい気がしますけども。
 
↑説明不足で申し訳ありません。
セルにエラーが表示されているのではなく
上手く値が取得できないのでfxをクリックすると
関数の引数の 値の 右に赤字で #NUM! と表示されています。
 
半平太さまの↓の検証も行ってみましたが
xlsxのブックからは値が上がってきます、
xlsmのブックからは値が上がってこず、空白です。
 
引用
拡張子xlsxから正常に値が取得できていることを確認する。
  
次にその状態のまま、拡張子xlsxを「名前を付けて保存する」にして、
「本当なの.xlsm」と言う名前で保存してみてください。
 
何がおかしいのでしょうか。
全く分からず困っています。
 
 
  

回答
投稿日時: 19/09/22 10:31:16
投稿者: んなっと

mimi1212さんは
https://www.moug.net/faq/viewtopic.php?t=78616 
の「セルのコピー VBA」で質問されたしん88さんと同一人物ですね。
 
上記スレッドで書き込まれたコードは、
Application.EnableEvents = False/True などがないとすれば、使ってはいけないものです。
If Not Intersect(Target, ) Is Nothing Then のような、範囲を限定するコードもつけたいところ。
 
私だったら変化したセルを1つに限定してから
Target.Offset(, -2).Resize(, 2).Value = Target.Offset(, -4).Resize(, 2).Value
とします。For i = 1 to 1000はありえない。
 
Worksheet_Change イベント を使いたいなら、もう少しVBAの勉強をしてからにしてください。

回答
投稿日時: 19/09/22 13:16:45
投稿者: 半平太

なんか実状は、VBAが絡んでいる話と感じるんですが、
 
私の検証目的は、
 xlsxと同じデータを持つxlsmから、xlsxとは異なる結果が出る、
と言う主張を否定しようとするものです。
 
私が想定する検証方法に限って言えば、
xlsxが起点なので、VBAなんて含まれてないハズなんですけども。
 
真相はどうなっているんですかねぇ・・

トピックに返信