Excel VBA質問箱 IV

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

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


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

【76057】値が不一致の場合のみ、特定の列の最下行の値を削除したい ヤマダ 14/9/4(木) 18:53 質問[未読]
【76058】Re:値が不一致の場合のみ、特定の列の最下... kanabun 14/9/4(木) 19:18 発言[未読]
【76059】Re:値が不一致の場合のみ、特定の列の最下... ヤマダ 14/9/4(木) 19:29 発言[未読]
【76060】Re:値が不一致の場合のみ、特定の列の最下... kanabun 14/9/4(木) 19:50 発言[未読]
【76061】Re:値が不一致の場合のみ、特定の列の最下... ヤマダ 14/9/5(金) 15:40 お礼[未読]

【76057】値が不一致の場合のみ、特定の列の最下行...
質問  ヤマダ  - 14/9/4(木) 18:53 -

引用なし
パスワード
   Excel2010を使っております
If Range("W" & rNum1 + 1).Formula = Range("U" & rNum + 1).Formula Then
MsgBox "一致"
Else
MsgBox "不一致"
For i = 5 To Cells(Rows.Count, 21).End(xlUp).Row
Range("V" & i).Formula = "=T" & i & "-" & "U" & i

Next

Dim LastRow As Long
LastRow = Cells(Rows.Count, 22).End(xlUp).Row
Cells(LastRow, 22).ClearContents
End If


U列とW列の合計が一致していたらメッセージを出して終了

U列とW列の合計が一致していなければメッセージを出す+
T列からU列を引いてV列に結果を表示させる

表示させるまでは出来まして、V列の最下行の値を削除いたしたく思います。
その為に下記コードを使っていますが、

Dim LastRow As Long
LastRow = Cells(Rows.Count, 22).End(xlUp).Row
Cells(LastRow, 22).ClearContents
End If


V列の値が、全て削除されてしまいます

一致していなかった場合だけ、V列の最下行の値を削除する為には
どうすれば良いでしょうか?
ご教授下さい   

【76058】Re:値が不一致の場合のみ、特定の列の最...
発言  kanabun  - 14/9/4(木) 19:18 -

引用なし
パスワード
   ▼ヤマダ さん:

>V列の値が、全て削除されてしまいます

> If Range("W" & rNum1 + 1).Formula = Range("U" & rNum + 1).Formula Then

とりあえず...
W列の「数式」と U列の「数式」を較べてるから、一致しないのでは?
結果の「値」を較べて判断したいのではありませんか?

【76059】Re:値が不一致の場合のみ、特定の列の最...
発言  ヤマダ  - 14/9/4(木) 19:29 -

引用なし
パスワード
   ▼kanabun さん:
>▼ヤマダ さん:
>
>>V列の値が、全て削除されてしまいます
>
>> If Range("W" & rNum1 + 1).Formula = Range("U" & rNum + 1).Formula Then
>
>とりあえず...
>W列の「数式」と U列の「数式」を較べてるから、一致しないのでは?
>結果の「値」を較べて判断したいのではありませんか?
 
Kanabun様

数式ではなく、値を比べたいです。

【76060】Re:値が不一致の場合のみ、特定の列の最...
発言  kanabun  - 14/9/4(木) 19:50 -

引用なし
パスワード
   ▼ヤマダ さん:

>
>数式ではなく、値を比べたいです。

簡単な サンプルデータがあるとよく分かるのですが...

あてずっぽで、

見るのは T,U,V,Wの4列ですよね?
最初に U列の最終セルをRange型の変数 LastU にセットします。
このセルには U列の合計式が書いてあります。
このセルと そのふたつ右のW列の同じ行のセルの「値」を較べます。
同じなら OKで終了。
同じでないとき、
 T列の値 - U列の値 という式を V列にセットしてやります。

ここまでをコードにすると。。。

Sub Check1()
  Dim LastU As Range
  Const msg = "U列合計とW列合計"
  
  '[U]列の最終セル(合計セル)
  Set LastU = Cells(Rows.Count, "U").End(xlUp)
  'U列とW列の合計が一致していたらメッセージを出して終了
  If LastU.Value = LastU.Offset(, 2).Value Then
    MsgBox msg & "は同じです OK"
    Exit Sub 'OK 終了
  End If
  
 '合計が一致していなければ メッセージを出して
  MsgBox msg & "が異なります"
  'T列からU列を引いてV列に結果を表示させる
  Range("V5", LastU.Offset(-1, 1)).Formula = "=T5-U5"
End Sub

【76061】Re:値が不一致の場合のみ、特定の列の最...
お礼  ヤマダ  - 14/9/5(金) 15:40 -

引用なし
パスワード
   ▼kanabun さん:
>▼ヤマダ さん:
>
>>
>>数式ではなく、値を比べたいです。
>
>簡単な サンプルデータがあるとよく分かるのですが...
>
>あてずっぽで、
>
>見るのは T,U,V,Wの4列ですよね?
>最初に U列の最終セルをRange型の変数 LastU にセットします。
>このセルには U列の合計式が書いてあります。
>このセルと そのふたつ右のW列の同じ行のセルの「値」を較べます。
>同じなら OKで終了。
>同じでないとき、
> T列の値 - U列の値 という式を V列にセットしてやります。
>
>ここまでをコードにすると。。。
>
>Sub Check1()
>  Dim LastU As Range
>  Const msg = "U列合計とW列合計"
>  
>  '[U]列の最終セル(合計セル)
>  Set LastU = Cells(Rows.Count, "U").End(xlUp)
>  'U列とW列の合計が一致していたらメッセージを出して終了
>  If LastU.Value = LastU.Offset(, 2).Value Then
>    MsgBox msg & "は同じです OK"
>    Exit Sub 'OK 終了
>  End If
>  
> '合計が一致していなければ メッセージを出して
>  MsgBox msg & "が異なります"
>  'T列からU列を引いてV列に結果を表示させる
>  Range("V5", LastU.Offset(-1, 1)).Formula = "=T5-U5"
>End Sub

ありがとうございました

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