advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 228 for エラー値 #N/A (0.017 sec.)
エラー値 (861), #n/a (1385)
[[20190930204343]]
#score: 10842
@digest: 0f9cdefc0dedfdff92894fbae2739f98
@id: 80928
@mdate: 2019-10-05T03:08:15Z
@size: 10959
@type: text/plain
#keywords: 菓子 (77832), 子f (58560), 子h (43280), 子d (40451), 子a (37820), 子e (33599), 中54 (29993), 当価 (29295), 橋24 (22862), 村49 (21479), 子b (20237), 吉村 (15899), 田12 (15848), 子c (12162), 上田 (9170), 田10 (8090), xlcelltypeconstants (7675), specialcells (4844), iferror (4578), 価格 (3692), formula (3566), c13 (2642), 環参 (2569), 循環 (2449), match (2209), 山田 (2157), 1200 (2078), 担当 (1981), 2019 (1684), 田中 (1679), マナ (1666), ー値 (1657)
『該当しない所は空欄にしたい』(VBA初心者)
A | B | C | D | E | F | G | H | 1 |個数 │商品 |担当|価格| | | | -----|-----|-----|----|----|-----|----|-----| 2 | 100 │菓子A| | | |担当|価格 | -----|-----|-----|----|----|-----|----|-----| 3 | 200 |菓子B| | |菓子A|山田|1200 | -----|-----|-----|----|----|-----|----|-----| 4 | 300 │菓子C| | |菓子B|高橋|245 | -----|-----|-----|----|----|-----|----|-----| 5 | 400 |菓子D| | |菓子D|田中|5420 | -----|-----|-----|----|----|-----|----|-----| 6 | 500 │菓子E| | |菓子F|上田|10 | -----|-----|-----|----|----|-----|----|-----| 7 | 600 |菓子F| | |菓子H|吉村|4907 | -----|-----|-----|----|----|-----|----|-----| 8 | 700 │菓子F| | | | | | -----|-----|-----|----|----|-----|----|-----| 9 | 800 |菓子H| | | | | | -----|-----|-----|----|----|-----|----|-----| 10 | 110 │菓子A| | | | | | -----|-----|-----|----|----|-----|----|-----| 11 | 120 |菓子D| | | | | | -----|-----|-----|----|----|-----|----|-----| 12 | 130 │菓子E| | | | | | -----|-----|-----|----|----|-----|----|-----| 13 | 140 |菓子A| | | | | | -----|-----|-----|----|----|-----|----|-----| F列でC列が一致箇所にG、H列の情報をD、E列に反映させたいのですが 下記式だと該当しないセルに#N/Aと記載されてしまいます。 該当しないところは空欄にしたいのですが どうすればよいでしょうか。 Sub test() Range("C1:C13").SpecialCells(xlCellTypeConstants, 1).Offset(, 1).Formula = "=INDEX($G$3:$G$7,MATCH(B2,$F$3:$F$7,0))" Range("C1:C13").SpecialCells(xlCellTypeConstants, 1).Offset(, 1).Formula = "=INDEX($H$3:$H$7,MATCH(B2,$F$3:$F$7,0))" End Sub < 使用 Excel:unknown、使用 OS:unknown > ---- IFERROR関数が役立つと思います。 (黄色い循環参照) 2019/09/30(月) 21:03 ---- 本題と別ですが、VLOOKUPを使わない理由はあるのでしょうか。 (マナ) 2019/09/30(月) 21:21 ---- 黄色い循環参照、マナさん回答ありがとうございます。 VLOOKUPを使わない理由ですが、F列とG列の間に情報が追加される可能性がある為、matchとindexをつかってます。 セルに直接=IFERROR(INDEX($G$3:$G$7,MATCH(B2,$F$3:$F$7,0)),"")と入れた時は問題ないのですが Sub test() Range("C1:C13").SpecialCells(xlCellTypeConstants, 1).Offset(, 1).Formula = "==IFERROR(INDEX($G$3:$G$7,MATCH(B2,$F$3:$F$7,0)),"")" End Sub でマクロ実行すると 実行時エラー1004 アプリケーション定義またはオブジェクト定義のエラーです。 エラーメッセージがでます。 どうしてでしょうか。 (VBA初心者) 2019/10/01(火) 19:17 ---- >VLOOKUPを使わない理由ですが、F列とG列の間に情報が追加される可能性がある為、matchとindexをつかってます。 match、indexはセル範囲を自動で拡張してくれると思っているのだろうか。 (toyota) 2019/10/01(火) 20:34 ---- VLOOKUPを使わない理由が納得できたわけではありませんが、本題に戻って、 黄色い循環参照さんご提案の、IFERROR関数は試してみたのでしょうか。 まずはセルに数式を手入力し、期待の結果が得られるか確認するとよいです。 (マナ) 2019/10/01(火) 21:17 ---- >実行時エラー1004 横からですが、手作業でC1:C13を選択し、ctrl + G → セルの選択 → 定数、数値のみにチェック →OK という操作をしたときに、"該当するセルが見つかりません"なんて出たりしませんか? (もこな2) 2019/10/01(火) 22:00 ---- 大変失礼しました。IFERROR関数を試してその結果を報告いただいていましたね。反省して、回答を自粛します。 (マナ) 2019/10/01(火) 22:07 ---- もこな2さん回答ありがとうございます。 試した所、該当するセルが見つかりませんとでました。 色々試してみたのですがどうすれば対策できるかわかりませんでした。 マナさん 回答ありがとうございます。 回答自粛されなくて全然OKです^^ (VBA初心者) 2019/10/03(木) 08:59 ---- >セルに直接=IFERROR(INDEX($G$3:$G$7,MATCH(B2,$F$3:$F$7,0)),"")と入れた時は問題ないのですが それが、そもそも本当? って感じなんですけども。 Matchの第一引数がB2になっていますが、B2って個数ですよ? それとも提示されたレイアウトがズレていて、個数はA列なんですか? (半平太) 2019/10/03(木) 09:35 ---- ■1 >該当するセルが見つかりませんとでました。 ならば、「Range("C1:C13").SpecialCells(xlCellTypeConstants, 1)」に相当するセルがないから、RangeオブジェクトのプロパティであるOffsetやFormulaは取得/設定できませんよね。 ■2 >色々試してみたのですがどうすれば対策できるかわかりませんでした。 どのようなことを色々試してみたのか不明ですが、よくあるのはエラーを無視する(エラーが発生する場合はその処理を行わない)方法でしょうか Sub test2() On Error Resume Next Range("C1:C13").SpecialCells(xlCellTypeConstants, 1).Offset(, 1).Formula = "〜" On Error GoTo 0 End Sub ■3 数式の中身まで検証してませんけど 誤 〜.Formula = "==IFERROR(INDEX($G$3:$G$7,MATCH(B2,$F$3:$F$7,0)),"")" 正 〜.Formula = "=IFERROR(INDEX($G$3:$G$7,MATCH(B2,$F$3:$F$7,0)),"")" ではありませんか?投稿時にミスっただけでしょうか? (もこな2 ) 2019/10/03(木) 10:04 ---- Sub test() With Range(Range("C2"), Cells(Rows.Count, "C").End(xlUp)) With .Resize(, 2).Offset(, 1) .Formula = "=INDEX(F$6:G$11,MATCH(C2,F$6:F$11,0),2)" .Font.ColorIndex = xlColorIndexAutomatic On Error Resume Next .SpecialCells(xlCellTypeFormulas, xlErrors).Font.Color = vbWhite On Error GoTo 0 End With End With End Sub 列の表記が違うようですね。 エラー値が表示されたセルを、 空欄にするなら、ジャンプ機能(SpecialCells)で見つかったセルに対して、 なにかすればいいのでは? サンプルではフォントの色を白にして、「空白」のように見せてみました。 フォントを白くするなら、マクロで設定せず、 手動で条件付き書式設定で白くするよう設定してもいいかも知れません。 もちろんIferror関数などを使って、""(長さ0の文字列)を返して、 「空白」のようにみせるのも常套手段です。 ほんとに「空白」にするなら、「数式と値のクリア」をしないと、 「空白」とは呼べないと思います。 いずれにしても、C列でSpecialCellsでセルを検索して 数式を入れるセルを決めるというのは、 手順が違うように思います。 計算してみるまでエラー値になるかわからないし、 エラー値が表示されるのが不細工なので、 それを見せないようにしたいのですから。 (まっつわん) 2019/10/03(木) 16:14 ---- ■4 ちょっと確認ですが、↓のような時に ____A_______B_______C_______D_______E_______F_______G_______H______I_____ 1| 個数 商品 担当 価格 2| 100 菓子A 商品 ダミー 担当 価格 3| 200 菓子B 菓子A 山田 1200 4| 300 菓子C 菓子B ??橋 245 5| 400 菓子D 菓子D 田中 5420 6| 500 菓子E 菓子F 上田 10 7| 600 菓子F 菓子H 吉村 4907 8| 700 菓子F 9| 800 菓子H 10| 110 菓子A 11| 120 菓子D 12| 130 菓子E 13| 140 菓子A ↓になれば正解という理解でよいですか? ____A_______B_______C_______D_______E_______F_______G_______H______I_____ 1| 個数 商品 担当 価格 2| 100 菓子A 山田 1200 商品 ダミー 担当 価格 3| 200 菓子B ??橋 245 菓子A 山田 1200 4| 300 菓子C 菓子B ??橋 245 5| 400 菓子D 田中 5420 菓子D 田中 5420 6| 500 菓子E 菓子F 上田 10 7| 600 菓子F 上田 10 菓子H 吉村 4907 8| 700 菓子F 上田 10 9| 800 菓子H 吉村 4907 10| 110 菓子A 山田 1200 11| 120 菓子D 田中 5420 12| 130 菓子E 13| 140 菓子A 山田 1200 その場合、手作業で考えてみると、 (1) D2セルに =IFERROR(VLOOKUP($C2,$F$2:$I$7,MATCH(D$1,$F$2:$I$2,0),FALSE),"") (2) D2セルの数式をD2〜E13に貼付 で出来ちゃう気がしますので、これってわざわざマクロでやることなのかな?なんて思います。 ■5 順番が前後しちゃいますが、 >VLOOKUPを使わない理由ですが、F列とG列の間に情報が追加される可能性がある為、matchとindexをつかってます。 上記の数式で示しているように列の特定にMATCH関数を使えば、VLOOKUP関数でも対応できますよ。 (INDEX関数の範囲を複数列にしても、同様の方法が使えます) ■6 「■1と■2」の補足 ↓が見つからなかったのは、定数のうち【数値】を探しているからだと思われます。 Range("C1:C13").SpecialCells(xlCellTypeConstants, 1) なので、↓のようにすれば良いと思います。 Range("C1:C13").SpecialCells(xlCellTypeConstants, 1 + 2) Range("C1:C13").SpecialCells(xlCellTypeConstants, xlNumbers + xlTextValues ) ■7 ただ、直し方を言っておいて何ですが、そもそもSpecialCells使う必要あるのかなぁとおもったり。 もし、単純に参照先に商品、担当、価格がある場合以外は空白になってほしいだけであれば、C列がブランクでもIFERROR関数でカバーできちゃので、単純に「D2〜cells(C列最終行,"E")」まで、上記の数式をいれちゃうのも手だと思います。 (もこな2 ) 2019/10/03(木) 17:21 ---- どなたも指摘されないので >アプリケーション定義またはオブジェクト定義のエラーです。 このエラーだけなら > "==IFERROR(INDEX($G$3:$G$7,MATCH(B2,$F$3:$F$7,0)),"")" ^^↓^^ ^^↓^^ "=IFERROR(INDEX($G$3:$G$7,MATCH(B2,$F$3:$F$7,0)),"""")" で、皆さんのご指摘もあわせると、こんな感じではだめですか Range("C2:C13").SpecialCells(xlCellTypeConstants).Offset(, 1).Formula = "=IFERROR(INDEX($G$3:$G$7,MATCH(C2,$F$3:$F$7,0)),"""")" ^^^^ ^^ ^^^ あるいは Columns("B").SpecialCells(xlCellTypeConstants, 1).Offset(, 2).Formula = "=IFERROR(INDEX($G$3:$G$7,MATCH(C2,$F$3:$F$7,0)),"""")" ^^^^ ^^ ^^^ ^^^^^^^^^^^ ^^^ わたしなら、A1形式でなく、R1C1形式を使いますが、 前回質問から想像すると、たぶん問題ないのかもしれません。 (マナ) 2019/10/03(木) 18:46 ---- 出張で連絡が遅くなってしまい申し訳ありませんm_ _m 皆さんのご指摘通り、MATCHはC列なのに間違ってB列を質問の方で入れてしまいました。 しっかり確認すればよかったです。申し訳ありません。 半平太さん、もこな2さん、まっつわん、マナさん 丁寧に回答ありがとうございます。 エラーなく動きました。 助かりました。 =IFERROR(INDEX($G$3:$G$7,MATCH(C2,$F$3:$F$7,0)),"""")" ↑について修行し直します。 (VBA初心者) 2019/10/05(土) 12:08 ...
http://www.excel.studio-kazu.jp/wiki/kazuwiki/201909/20190930204343.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97018 documents and 608145 words.

訪問者:カウンタValid HTML 4.01 Transitional