アプリ版:「スタンプのみでお礼する」機能のリリースについて

Excelにて、数式のエラー(#N/A)を検索オプションにて、値で検索し、値(0)←数字のゼロに置換しようとするのですが、上手くいきません。
置換できる方法を教えて下さい。

質問者からの補足コメント

  • うーん・・・

    やってみたのですが、『置換対象のデータが見つかりません。検索対象のデータ書式と条件が適切に指定されていることを確認してください。このブックに一致するデータがあることがあらかじめ分かっている場合は、シートが保護されていないことを確認してください。保護されたシートのデータは置換できません』とメッセージが表示されます。

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/05/25 14:58
  • うーん・・・

    4000近く該当したセルを一括で、置換して0に変換できる方法はないでしょうか?
    該当したセルは、VLOOLUP関数で表示させた数値です。
    たとえば全てA1セルというわけではありません。

    No.2の回答に寄せられた補足コメントです。 補足日時:2017/05/25 15:18
  • つらい・・・

    VLLOKUP関数の数式内の検索値と列番号がそれぞれ違う場合、検索して置換する方法はありませうでしょうか?

    No.3の回答に寄せられた補足コメントです。 補足日時:2017/05/25 15:29
  • どう思う?

    下の方で、対応できました!

    もう一つ質問させていただきたいのですが、
    A1~A12までAさんの勤務時間の月合計が入っていて、A13にその年の合計勤務時間を表示したいとして、A14からはBさんが始まり、それが12ヶ月でなく、5ヶ月の期間でA20にBさんの合計勤務時間を出したい場合(A21からもずーっと名前が連なります)マクロで対応できますでしょうか?

    No.8の回答に寄せられた補足コメントです。 補足日時:2017/05/25 16:57

A 回答 (9件)

こんにちは!



VBAになりますが一例です。
すべてのエラーセル(#N/Aや#DIV/0!など)が「0」になります。

Sub Sample1()
Dim myRng As Range
Set myRng = ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas, xlErrors)
If Not myRng Is Nothing Then
myRng = 0
End If
End Sub
 
※ #N/A のエラーだけを「0」にしたい場合は↓のコードにしてみてください。

Sub Sample2()
Dim c As Range, myRng As Range
Set myRng = ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas, xlErrors)
If Not myRng Is Nothing Then
For Each c In myRng
If c = CVErr(xlErrNA) Then
c = 0
End If
Next c
End If
End Sub

こんな感じではどうでしょうか?m(_ _)m
この回答への補足あり
    • good
    • 0

No.8です。



VBAでほとんどのコトは可能ですが、いくらVBAだとしても
「Aさん」のセル、「Bさん」のセルの区別が必要です。
単純に1行目から数値が羅列してあってもExcel的にはどこからどこまでが「Aさん」で、
どこからどこまでが「Bさん」なのか?は判断できません。
そこで↓の画像のように同じ列に何らかの区切りが判断できるものがあれば可能です。

あくまで↓の画像の配置の場合のVBAです。(合計の行は空白のままでマクロを実行します)

Sub Sample3()
Dim i As Long, myVal As Variant
For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
If Cells(i, "A") <> "合計" Then
myVal = myVal + Cells(i, "B")
Else
Cells(i, "B") = myVal
myVal = 0
End If
Next i
End Sub

※ 画像では補足どおりにB列に「時間」を表示させていますが、
実際の表ではもっと右側の列になるのが普通だと思います。m(_ _)m
「数式を値に置換するには?」の回答画像9
    • good
    • 0
この回答へのお礼

ありがとうございます。
教えていただいたやり方で解決しそうです。

お礼日時:2017/05/26 08:27

こんにちは



#N/Aで検索は可能なので、数が少なければ、「次を検索」と0のキー入力で処理することも可能ですが、箇所数が多いとそうもいきませんね。


>該当したセルを一括で、置換して0に変換できる方法はないでしょうか?
『セルの値が#N/Aなら無条件で0に置き換える』ということで良ければ、マクロで可能です。
 ※ 標準モジュールにコピペして実行。
 ※ アクティブなシートに対して処理されます。
Sub sample()
Dim c As Range, n As Long

n = 0
For Each c In ActiveSheet.UsedRange
 If IsError(c.Value) Then
  If c.Value = CVErr(xlErrNA) Then
   c.Value = 0
   n = n + 1
  End If
 End If
Next c
MsgBox "合計" & n & "ヶ所を置き換えました。"
End Sub


>VLLOKUP関数の数式内の検索値と列番号がそれぞれ違う場合、
>検索して置換する方法はありませうでしょうか?
ご質問の意味がわかりませんが、式そのものを検索したり置換することも、以下の手順で可能です。
 1)セルの表示を数式が表示されるようにします。
  (数式タブのワークシート分析-数式の表示)
 2)上記の表示状態で、通常の検索・置換ダイアログで文字等を入力すれば
   関数式などに対しても、通常の文字と同様に検索・置換が可能です。
    • good
    • 0

数式から値に変えたいセルを選択する→


コピー を選択してクリックする。→(何も変わらない!)が、次に、
右クリックから、形式を選択して貼り付け をクリック→
式を数値にする または、値 のタグをクリックしてチェックを付ける!→OK
すれば、かわっている!

または、ロータス123では、範囲→範囲のプロパティー→ # →文字列をクリックしてok
→ダブルクリックすれば変わるので、同じく

数式から値に変えたいセルを選択後、文字列の所をクリック後、ダブルクリックすればいい


違いは、上の方法は、1回限りで、セルを消去したら、元どうり!でも
下の方法は、消去しても、文字列のままです!数式は入力できません!
    • good
    • 0

数式の返り値を置換することはできません。


ですから、式自体を変更する案を出されているのです。
VLOOKUP関数をお使いですから、1列方向でデータが入っているならオートフィルタで「#N/A」データだけ抽出し、上から下まで選択→0を入力しCtrl+Enterでは如何でしょうか?
    • good
    • 0

質問者様がどのような結果を期待されているのかすみませんが理解できません。


他の回答者様にお任せします。
    • good
    • 0

vlookup関数に埋め込むとしたら、例えばこのようにします。


=IFERROR(VLOOKUP(5,$A$1:$B$20,2,FALSE),0)
この回答への補足あり
    • good
    • 0

=IF(ISERROR(A1),0,A1)


は、A1セルが、エラーであれば、0、エラーでなければA1を内容をそのまま返す関数です。
これで、エラーの値のものは、0に変換されて結果を出します。
この回答への補足あり
    • good
    • 0

=IF(ISERROR(A1),0,A1)

この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!