Excel VBA質問箱 IV

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

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


5584 / 13645 ツリー ←次へ | 前へ→

【50003】VLOOKUPでエラー値のセルをクリアに・・・ (。。j) 07/7/3(火) 11:16 質問[未読]
【50004】Re:VLOOKUPでエラー値のセルをクリアに・・・ ハチ 07/7/3(火) 11:27 回答[未読]
【50025】Re:VLOOKUPでエラー値のセルをクリアに・・・ (。。j) 07/7/4(水) 13:44 お礼[未読]
【50011】Re:VLOOKUPでエラー値のセルをクリアに・・・ 通りすがり 07/7/3(火) 14:25 発言[未読]
【50026】Re:VLOOKUPでエラー値のセルをクリアに・・・ (。。j) 07/7/4(水) 13:49 質問[未読]
【50021】Re:VLOOKUPでエラー値のセルをクリアに・・・ syugyoutyu 07/7/4(水) 9:45 回答[未読]
【50023】Re:VLOOKUPでエラー値のセルをクリアに・・・ Jaka 07/7/4(水) 11:02 発言[未読]
【50028】Re:VLOOKUPでエラー値のセルをクリアに・・・ (。。j) 07/7/4(水) 14:41 お礼[未読]
【50029】Re:VLOOKUPでエラー値のセルをクリアに・・・ syugyoutyu 07/7/4(水) 15:58 質問[未読]
【50031】Re:VLOOKUPでエラー値のセルをクリアに・・・ ぴかる 07/7/4(水) 19:39 発言[未読]
【50032】Re:VLOOKUPでエラー値のセルをクリアに・・・ 07/7/4(水) 20:34 回答[未読]

【50003】VLOOKUPでエラー値のセルをクリアに・・・
質問  (。。j)  - 07/7/3(火) 11:16 -

引用なし
パスワード
   お世話になります。
VLOOKUPの数式を使って値の入っていないセル(エラー値になっているセル)だけをクリアにするマクロ式を教えてくださいm(_ _)m

因みに数値が入っているセルは既に値を代入しているので数式は入っていない状態です。

 #N/A
 #N/A
 #N/A    ←全ての#N/Aだけをクリアにしたい。
  80 ←数式は入っていない。
 #N/A
  90
 #N/A

よろしくお願いします。

【50004】Re:VLOOKUPでエラー値のセルをクリアに・・・
回答  ハチ  - 07/7/3(火) 11:27 -

引用なし
パスワード
   ▼(。。j) さん:
>お世話になります。
>VLOOKUPの数式を使って値の入っていないセル(エラー値になっているセル)だけをクリアにするマクロ式を教えてくださいm(_ _)m
>
>因みに数値が入っているセルは既に値を代入しているので数式は入っていない状態です。
>
> #N/A
> #N/A
> #N/A    ←全ての#N/Aだけをクリアにしたい。
>  80 ←数式は入っていない。
> #N/A
>  90
> #N/A
>
>よろしくお願いします。

編集>ジャンプ>セルの選択>数式>エラー値 で選択されますか?
選択されるなら、マクロの記録でわかりますよ。

それとも"#N/A"という文字列になっているってことですか?

【50011】Re:VLOOKUPでエラー値のセルをクリアに・・・
発言  通りすがり  - 07/7/3(火) 14:25 -

引用なし
パスワード
   ▼(。。j) さん:

VLOOKUPの式を
=IF(ISERROR(VLOOKUP(〜略〜)),"",VLOOKUP(〜略〜))
とすれば、空白(Empty値ではありませんが)にはなります。

この""を検索しやすい値にすれば(""の(空白)ままでも良い)
クリアしやすいのではないでしょうか。
(""だったら、クリアの必要もない!?)

【50021】Re:VLOOKUPでエラー値のセルをクリアに・・・
回答  syugyoutyu  - 07/7/4(水) 9:45 -

引用なし
パスワード
   ▼(。。j) さん:

私は、ここに回答が出来るほどのレベルではありませんが、マクロを勉強中ならVLooK UP もマクロでやってみたらどうでしょう。つい最近、ここでのレスを参考に作ったものです。

Sub VLookの代わり()
Dim sh1     As Worksheet  'Sheets("Sheet1")VLooK UP を入れるシート
Dim sh2     As Worksheet  'Sheets("Sheet2")データが入ってるシート
Dim dsuu1    As Long     'Sheets("Sheet1")が何行あるか
Dim dsuu2    As Long     'Sheets("Sheet2")が何行あるか
Dim kensaku   As String    '検索値
Dim xyz     As Range

Set sh1 = Sheets("Sheet1")
Set sh2 = Sheets("Sheet2")

'Sheets("Sheet1")が何列あるか (検索値が何点あるか)
With sh1.UsedRange
  dsuu1 = .SpecialCells(xlLastCell).Row
End With

'Sheets("Sheet2")が何列あるか
With sh2.UsedRange
  dsuu2 = .SpecialCells(xlLastCell).Row
End With

For i = 2 To dsuu1
  kensaku = sh1.Range("A" & i)   ’kensakuの値のループ開始
    For y = 1 To dsuu2      ’kensakuの値を探すループ開始
    Set xyz = sh2.Range("A" & y)
      If kensaku = xyz Then   ’見つけたら
      sh1.Range("B" & i) = xyz.Offset(0, 1)
      sh1.Range("C" & i) = xyz.Offset(0, 2)
      sh1.Range("D" & i) = xyz.Offset(0, 3)
      End If          
    Next             ’kensakuの値を探すループ終了
Next i                ’kensakuの値のループ終了
MsgBox "在庫数反映完了"
End Sub

こんなコードです。一応出来てますが私も勉強中です。どなたか、もっと良いコードが有れば教えて下さい。

【50023】Re:VLOOKUPでエラー値のセルをクリアに・・・
発言  Jaka  - 07/7/4(水) 11:02 -

引用なし
パスワード
   ▼(。。j) さん:
>VLOOKUPの数式を使って値の入っていないセル(エラー値になっているセル)だけをクリアにするマクロ式を教えてくださいm(_ _)m
>
>因みに数値が入っているセルは既に値を代入しているので数式は入っていない状態です。
>
> #N/A
> #N/A
> #N/A    ←全ての#N/Aだけをクリアにしたい。
>  80 ←数式は入っていない。
> #N/A
>  90
「VLOOKUPの数式を使って値の入っていないセル(エラー値になっているセル)だけ」なのに
なんで「 ←数式は入っていない。」とかが絡んでくるのか解りません。
最終的にどうしたいのか全くわかってません。
なんとなく、回答がすでに出ていると思いますが、取りあえずどっちだか解らないけどこんな感じのこと???

Sub GTV()
Dim Cel As Range, St As String
For Each Cel In Range("A1:A12")
  St = Cel.Formula
  If InStr(1, St, "VLOOKUP") > 0 Then
    Cel.Formula = "=if(isna(" & Mid(St, 2) & "),""""," & Mid(St, 2) & ")"
  End If
Next
End Sub

Sub GTR()
Dim Cel As Range, St As String
For Each Cel In Range("A1:A12")
  St = Cel.Formula
  If InStr(1, St, "VLOOKUP") > 0 Then
    If IsError(Cel) Then
     Cel.Value = Empty
    End If
  End If
Next
End Sub

【50025】Re:VLOOKUPでエラー値のセルをクリアに・・・
お礼  (。。j)  - 07/7/4(水) 13:44 -

引用なし
パスワード
   ▼ハチ さん:編集>ジャンプ>セルの選択>数式>エラー値を用いてクリアにすれば良い事だったのですね。
有難うございました(・∀・)

>▼(。。j) さん:
>>お世話になります。
>>VLOOKUPの数式を使って値の入っていないセル(エラー値になっているセル)だけをクリアにするマクロ式を教えてくださいm(_ _)m
>>
>>因みに数値が入っているセルは既に値を代入しているので数式は入っていない状態です。
>>
>> #N/A
>> #N/A
>> #N/A    ←全ての#N/Aだけをクリアにしたい。
>>  80 ←数式は入っていない。
>> #N/A
>>  90
>> #N/A
>>
>>よろしくお願いします。
>
>編集>ジャンプ>セルの選択>数式>エラー値 で選択されますか?
>選択されるなら、マクロの記録でわかりますよ。
>
>それとも"#N/A"という文字列になっているってことですか?

【50026】Re:VLOOKUPでエラー値のセルをクリアに・・・
質問  (。。j)  - 07/7/4(水) 13:49 -

引用なし
パスワード
   ▼通りすがり さん:お答え有難うございます。その""のところを全て検索し、選択するにはどのように行えばよいのでしょうか??実は次の列にも同じVLOOKUPを使いたいので前の列の数式自体を全消しにしておきたいのですが。。。

>▼(。。j) さん:
>
>VLOOKUPの式を
>=IF(ISERROR(VLOOKUP(〜略〜)),"",VLOOKUP(〜略〜))
>とすれば、空白(Empty値ではありませんが)にはなります。
>
>この""を検索しやすい値にすれば(""の(空白)ままでも良い)
>クリアしやすいのではないでしょうか。
>(""だったら、クリアの必要もない!?)

【50028】Re:VLOOKUPでエラー値のセルをクリアに・・・
お礼  (。。j)  - 07/7/4(水) 14:41 -

引用なし
パスワード
   ▼syugyoutyu さん:ありがとうございます。今はぜんぜん分かりませんが勉強させていただきます。分からないところはまた質問させてくださいm(_ _)m

>▼(。。j) さん:
>
>私は、ここに回答が出来るほどのレベルではありませんが、マクロを勉強中ならVLooK UP もマクロでやってみたらどうでしょう。つい最近、ここでのレスを参考に作ったものです。
>
>Sub VLookの代わり()
>Dim sh1     As Worksheet  'Sheets("Sheet1")VLooK UP を入れるシート
>Dim sh2     As Worksheet  'Sheets("Sheet2")データが入ってるシート
>Dim dsuu1    As Long     'Sheets("Sheet1")が何行あるか
>Dim dsuu2    As Long     'Sheets("Sheet2")が何行あるか
>Dim kensaku   As String    '検索値
>Dim xyz     As Range
>
>Set sh1 = Sheets("Sheet1")
>Set sh2 = Sheets("Sheet2")
>
>'Sheets("Sheet1")が何列あるか (検索値が何点あるか)
>With sh1.UsedRange
>  dsuu1 = .SpecialCells(xlLastCell).Row
>End With
>
>'Sheets("Sheet2")が何列あるか
>With sh2.UsedRange
>  dsuu2 = .SpecialCells(xlLastCell).Row
>End With
>
>For i = 2 To dsuu1
>  kensaku = sh1.Range("A" & i)   ’kensakuの値のループ開始
>    For y = 1 To dsuu2      ’kensakuの値を探すループ開始
>    Set xyz = sh2.Range("A" & y)
>      If kensaku = xyz Then   ’見つけたら
>      sh1.Range("B" & i) = xyz.Offset(0, 1)
>      sh1.Range("C" & i) = xyz.Offset(0, 2)
>      sh1.Range("D" & i) = xyz.Offset(0, 3)
>      End If          
>    Next             ’kensakuの値を探すループ終了
>Next i                ’kensakuの値のループ終了
> MsgBox "在庫数反映完了"
>End Sub
>
>こんなコードです。一応出来てますが私も勉強中です。どなたか、もっと良いコードが有れば教えて下さい。

【50029】Re:VLOOKUPでエラー値のセルをクリアに・・・
質問  syugyoutyu  - 07/7/4(水) 15:58 -

引用なし
パスワード
   ▼(。。j) さん:
説明文たくさん入れたのに悔しい(>_<)
>▼通りすがり さん:お答え有難うございます。その""のところを全て検索し、選>択するにはどのように行えばよいのでしょうか??実は次の列にも同じVLOOKUPを>使いたいので前の列の数式自体を全消しにしておきたいのですが。。。
の質問の意味も解らず、チョットもやもやしてます。

解決していないようなら、VLookUPの式の中身と(式の中をコピーし、貼り付けて投稿して下さい)式が入っている場所を教えて下さい。

スッキリしたいです。

【50031】Re:VLOOKUPでエラー値のセルをクリアに・・・
発言  ぴかる  - 07/7/4(水) 19:39 -

引用なし
パスワード
   みなさん、こんにちは。

あんまし関係ないかもしれませんが、下記マクロにてエラーを非表示とする事が
出来ます。条件付書式にて背景色と文字色を同じにしています。

Sub 演算エラー非表示()
  
Dim 初期セル As Range
Dim セル As Range
Dim 設定数 As Integer
Dim I As Integer
Dim 数式 As String
Dim FrgA As Integer
Dim FrgB As Integer
Dim カウント As Long
  
  On Error GoTo errout
  
  メッセージ = "セルの値が↓の様な演算エラーとなった場合、文字色を変更し非表示とします。" & vbLf & _
        " ( #N/A、#VALUE!、#REF!、#DIV/0!、#NUM!、#NAME? )" & vbLf & "" & vbLf & _
        "条件付き書式を用いて実行します。" & vbLf & _
        "(既に3ヶの書式が設定されているセルは実行されません。)" & vbLf & "" & vbLf & _
        "次の3つのうちのいずれかを選択して下さい。" & vbLf & "" & vbLf & _
        "《 はい 》    … シート内すべての数式セルを非表示モードにする。" & vbLf & _
        "《 いいえ 》   … 非表示モードを解除する。" & vbLf & _
        "《 キャンセル 》 … 何もせず、閉じる。"
  スタイル = vbYesNoCancel + vbQuestion + vbDefaultButton1 + vbApplicationModal
  タイトル = " 【 演算エラー非表示設定 】"
  YESNO = MsgBox(メッセージ, スタイル, タイトル)
  FrgA = 0
  FrgB = 0
  
  If (YESNO = vbYes) Or (YESNO = vbNo) Then
  
    Application.ScreenUpdating = False  '画面固定
    If ActiveSheet.ProtectContents Then FrgA = 1
    If YESNO = vbYes Then FrgB = 1
    If YESNO = vbNo Then FrgB = 2
    
    Set 初期セル = Selection
    ActiveSheet.Unprotect
    Cells.SpecialCells(xlCellTypeFormulas, 23).Select
    カウント = 0
    
    For Each セル In Selection
      設定数 = セル.FormatConditions.Count
      If 設定数 > 0 Then
        For I = 1 To 設定数
          数式 = セル.FormatConditions(I).Formula1
          If (Len(数式) >= 9) And (Left(数式, 9) = "=ISERROR(") Then
            セル.FormatConditions(I).Delete
            カウント = カウント + 1
          Exit For
          End If
        Next
      End If
   
      If FrgB = 1 Then
        設定数 = セル.FormatConditions.Count
        If 設定数 < 3 Then
          セル.FormatConditions.Add Type:=xlExpression, Formula1:= _
           "=ISERROR(" & セル.Address() & ")=TRUE"
          If セル.Interior.ColorIndex = xlNone Then
            セル.FormatConditions(設定数 + 1).Font.ColorIndex = 2
          Else
            セル.FormatConditions(設定数 + 1).Font.ColorIndex = _
            セル.Interior.ColorIndex
          End If
        End If
      End If
    Next

    初期セル.Select
    Set 初期セル = Nothing
    Application.ScreenUpdating = True  '画面固定解除
    If FrgA = 1 Then ActiveSheet.Protect
    If FrgB = 1 Then
      MsgBox "エラー非表示モードにしました。", vbInformation
    ElseIf FrgB = 2 Then
      If カウント = 0 Then MsgBox "エラー非表示に設定されてませんでした。", vbInformation
      If カウント > 0 Then MsgBox "通常の状態に戻しました。", vbInformation
    End If
  End If
  Exit Sub
 
errout:
  MsgBox Error(Err.Number), vbExclamation

End Sub

「ピカつーる」の機能の紹介でした!

【50032】Re:VLOOKUPでエラー値のセルをクリアに・・・
回答    - 07/7/4(水) 20:34 -

引用なし
パスワード
   ▼(。。j) さん:こんにちは
私も初心者で、回答するほどのレベルではありませんが、
昔、同じ経験をしたので、その時の解決方法(対症療法)です。
(#N/A が数式ではないということで、値複写した結果とかってに想定しました)

一般操作で 編集→置換 で 置換する文字を「#N/A」 、置換した文字を空欄のまま処理すると#N/Aは消去されます。マクロ処理するならそのまま自動記録して、範囲を修正するだけで可能です。
但し、今は私も「通りすがりさん」のように If(ISERROR(vlookup・・・・を使用して、初めからVLOOKUPの値がエラー表示されないようにしています。

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