[[20170115123631]] 『マクロで#N/Aを表示させないようにするには』(ウルトラ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロで#N/Aを表示させないようにするには』(ウルトラ)

Sub test()

 With Sheets("リスト  全体会用")
    .Range("A1:D100").Copy
    .Range("E1").PasteSpecial xlPasteValues
    End With
    Application.CutCopyMode = False
 End Sub

上記のマクロでコピペができました。元データーがOFFSET関数でA:DにあるデーターをE:Hにコピペしています。そこで、データーの入っていないところは当然のことながらOFFSET関数でA:Dに#N/Aのエラーになります。この#N/Aを表示させないようにするには、どんなマクロを付け加えたらできるのか、教えて頂けますか。

ちなみにA:Dには下記の関数が入っています。

OFFSET('リスト 部会用'!$D$4,(ROW(A1)-1)*3,COLUMN(A1)-1)

< 使用 Excel:unknown、使用 OS:Windows10 >


マクロは使わないで、大元の#N/AのセルをIFERROR関数で、空白にしておけばよいです。

使い方は
https://kokodane.com/kansu_logic_04.htm

(マナ) 2017/01/15(日) 13:23


これを参考にやってみました。

=IFERROR(INT(B3/1000),"---")

これでは、関数のエラーになりますが、すみません、恐縮ですがどうしたらよいのでしようか。教えて頂けませんか。(#NAMEの表示になります)

IFERROR(OFFSET('リスト 部会用'!$D$4,(ROW(A1)-1)*3,COLUMN(A1)-1,"---"))

(ウルトラ) 2017/01/15(日) 17:14


あれっ?うまくいきませんでしたか。
申し訳ありません。他の回答をお待ち下さい。

(マナ) 2017/01/15(日) 17:27


IFERRORの関数

Excel2003ですので、この関数がつかえなのかもしれません。つぎのものでもだめでした。

IF(ISERROR(OFFSET('リスト 部会用'!$D$4,(ROW(A1)-1)*3,COLUMN(A1)-1,"---"))
(ウルトラ) 2017/01/15(日) 17:46


 こんばんわ。

 IFERROR関数は2007から追加された関数なので2003では使用できません。
 今どき2003を使用するのは危険すぎるので最新バージョンに変える事を強くお勧めしますが、それは置いといて、
 EXCELのバージョンは必ず書くようにして下さい。

 サポートが完全に終了してかなり経つのと、2007、2010、2013、2016と4つも新バージョンが出てる時代なので、
 2003を使ってる人は珍しくなってきてるので。

 2003ですと=IF(ISERROR(元の式),"",元の式)のような書き方になります。

 もしくは値のコピペ後は、#N/Aと言う文字になってるはずなので、文字になっていれば置換機能で消すことが可能です。
 マクロ記録でコードを取得して、現在のコードに付け加えて下さい。

(sy) 2017/01/15(日) 18:07


 マクロで処理しているのですから、マクロ内でやるとして、syさんアドバイスの置換がベストだと思いますが
 条件を指定してジャンプ機能で定数/エラー値を選択してクリアする方法もあります。
 こちらも、マクロ記録でコードが生成されます。

 ただ、置換と異なり、そういったエラー値がなければ、実行時エラーで止まってしまうのでエラートラップを
 しかけなければいけないことと、#N/A 以外の #VALUE! といったすべてのエラーが対象になってしまいますが。

 Sub Test2()
    With Sheets("リスト  全体会用")
        .Range("A1:D100").Copy
        .Range("E1").PasteSpecial xlPasteValues
        On Error Resume Next
        .Range("E1:H100").SpecialCells(xlCellTypeConstants, xlErrors).ClearContents
        On Error GoTo 0
    End With
    Application.CutCopyMode = False
 End Sub

(β) 2017/01/15(日) 19:10


 それと、老婆心ながら。

 もちろん、xl2003を使っているユーザも、まだまだ多いようですし、中にはもっと古いものを
 使って居る人もいますね。

 それはいいのですが、何も情報がなければ、回答者は 少なくとも xl2007以降 を意識して回答します。

 質問をアップする際に エクセルバージョンやWIndowsのバージョンを選択する部分がありますよね?
 必ず、そこに印をつけて質問をアップするようにしてくださいね。

(β) 2017/01/15(日) 19:22


 すみませんが回答ではありません。普段OFFSET関数をほとんど使わないから私が知らないだけかもしれませんが

 OFFSET('リスト 部会用'!$D$4,(ROW(A1)-1)*3,COLUMN(A1)-1) 
 ↑の式で#N/Aのエラーがでることってありますか?

 あとOSがWindows10だったら当然2007以上だと回答者は思いますよね。
(bi) 2017/01/16(月) 08:50

 >OFFSET('リスト 部会用'!$D$4,(ROW(A1)-1)*3,COLUMN(A1)-1) 
 >↑の式で#N/Aのエラーがでることってありますか?
 その式そのものがが原因で#N/Aエラーになることは無いと思うが、その参照しているセルが#N/Aだとありえるか。
(ねむねむ) 2017/01/16(月) 09:12

 To bi さん

 よくわからないんですが、質問タイトルには #N/A、でもコメントの中では #NAME ですから、たぶん #N/A ではないのでしょうね。

 アップされた数式も (手打ちのようです)

 IF(ISERROR(OFFSET('リスト 部会用'!$D$4,(ROW(A1)-1)*3,COLUMN(A1)-1,"---")) 

 なんだかへんですし。

(β) 2017/01/16(月) 09:17


 βさん、#NAME?エラーのほうはIFERROR関数に関してではないのか?
(ねむねむ) 2017/01/16(月) 09:21

 あっ! そうでしたね。

 御意!

(β) 2017/01/16(月) 09:38


 ああ、なるほど。ねむねむさんありがとうございます。
(bi) 2017/01/16(月) 09:40

(β)さん いつもお世話になります。ありがとございます。
お礼が大変遅くなりました。色々な方からお教え頂きありがとうございました。完成出来ました。
(ウルトラ) 2017/01/17(火) 18:36

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.