• 締切済み

ifの条件であるセル範囲と別の範囲が完全に一致するとしたい

エクセルのマクロで、 if **** then の部分の ****にある範囲のセルとある範囲のセルが完全に一致しているという If Range(Cells(2, 3), Cells(60, 3)) = Range(Cells(2, 4), Cells(60, 4)) Then みたいなかんじにしたいのですが、これだとエラーになります。 どうしていけばいいでしょうか? 宜しく御願いします。

  • souyan
  • お礼率59% (103/173)

みんなの回答

  • deecyan
  • ベストアンサー率38% (89/233)
回答No.2

関数を作るしかないとおもいますが、 こんな感じ If eq_range(Range("A1:b4"), Range("C1:D4")) Then MsgBox "=" Else MsgBox "≠" End If 関数は Function eq_range(in1 As Range, in2 As Range) As Boolean eq_range = False If in1.Rows.Count = in2.Rows.Count And in1.Columns.Count = in2.Columns.Count Then For ii = 1 To in1.Rows.Count For jj = 1 To in1.Columns.Count If in1.Cells(ii, jj) <> in2.Cells(ii, jj) Then Exit Function End If Next Next eq_range = True End If End Function

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

>完全に一致しているという 「値の」こと(だけ)でしょうね。質問には明確に。 質問の路線ではできないようです。 Range("a3:c3") = "s" が、できるところまでで、左辺の変数・配列に入れられないようです。 隣接セルという事実に基づいて下記ぐらいかな。 Sub test02() Dim cl As Range n = "" For Each cl In Range("C2:C60") If cl <> cl.Offset(0, 1) Then n = n & cl.Address & " " Next If n <> "" Then MsgBox "不一致セルあり " & n End Sub 1行式で、できると言う回答を待ちたい。

関連するQ&A

  • エクセルマクロ 選択したセル範囲の中で空""のセルに'を入れる

    エクセルは長年使っていたのですが、 マクロも使いたいと思いネットで色々調べています。 やりたいことは、 選択したセル範囲の中で空""のセルに'を入れる マクロを作りたいのですが、 どうしたら良いのでしょうか? マクロ以外の方法もあれば教えて欲しいのですが、 この機会にマクロに挑戦しようと思いました。 宜しくお願いいたします。 今作成している途中のマクロはこんな感じですが 上手く動きません Sub NullCellAddDash () Dim cellrange As Range For Each cellrange In Selection.Cells If cellrange = "" Then cellrange = "'" End If Next End Sub

  • エクセルマクロで特定の範囲が空白という条件

    いつもお世話になっております。 今回の質問は、マクロである範囲が空白であるという条件を記載するのはどうすればよいかということです。 例えば、下のマクロはA1からB2までの矩形の範囲が全くの空白であるときに、C3に3を入力するというつもりで作りましたが、 If a.Value = "" Then の行でエラーになるようです。 この空白の条件はどのように記載すればよろしいでしょうか。 Sub a() Dim a As Range Set a = Range(Cells(1, 1), Cells(2, 2)) If a.Value = "" Then Cells(3, 3) = 3 End If

  • 連続するセルの比較をしたいのですが、(型が一致しません)のエラーが出ます。

     下記のどの部分でエラーになるのか、お教えください よろしくお願いします。  Sub CellsSamp() Sheets("sheet3").Select If Range(Cells(5, 1), Cells(5, 6)) = Range(Cells(5, 8), Cells(5, 25)).Value Then Range(Cells(6, 1), Cells(6, 6)) = Range(Cells(5, 1), Cells(5, 6)).Value End If End Sub

  • Excel VBAでセル範囲のコピー、貼り付け方法

    VBA初心者です。 今、Excel VBAでセル範囲を他のBookからコピーして張り付けるマクロを記述を次のように ThisWorkbook.Worksheets(2).Range(Cells(203 + ki, 5), Cells(203 + ki, 7)) = wkd.Worksheets(3).Range("M82:082") 書くとエラーになってしまいます。 セルが範囲でなくて、1つだとうまくいくのですが、範囲にするとエラーになってしまいます。 どうしたら、解決できますか、できるだけ簡単な記述でお願いします。

  • セル範囲を返す関数

    次のようにしますと「型が一致してません」エラーになってしまいます。 どうしたらセル範囲を返す関数が作れますか? Public Function inuinu() As Range Set inuinu = Range(Cells(1, 1), Cells(3, 3)) 'Debug.Print inuinu.Count End Function 返値にAreasの指定もしてみましたが巧くいきませんでした。

  • 選択範囲の空白セルに0を入れるマクロ

    Private Sub CommandButton1_Click() If Cells("選択範囲").SpecialCells(xlcellTypeblank).Select Then Range("選択範囲").Value = 0 End If End Sub このマクロを作成したのですが、動きません。 どこが、おかしいのでしょうか?

  • エクセルのマクロのセルの範囲指定

    エクセルのマクロで、うまくセルの範囲を指定できません。 例えば、 Range(Cells(5.6), Cells(8, 7)) = "AAA" と、指定した時は、F5:G8のセルにAAAという文字を代入するつもりで書いています。 ところが、マクロを実行すると、F1:G8まで、AAAの文字が代入されます。 どうしてでしょうか。 宜しくお願い致します。

  • 比較したいセルの文字列が一致したら"一致"

    いい案が思い浮かばないため皆さんのお知恵をお貸しください。 下はエクセルと思ってください    A列             B列 1  2009/01/07/22:55   2009/01/07/22:56 2  テスト1           テスト1 3  テスト2           テスト2 4  テスト3            テスト3 5  テスト4           テスト6 とこのようなシートがあります。 セルA1とB1は時間のため可変で比較対照としたくありません それ以外のA列とB列がすべて一致したとき一致 不一致があればセルA5が不一致とmsgboxで出したいと考えております。 まだ思案中で途中なのですが Sub test() Dim i As Integer i = 1 Do While Cells(i, 1) <> "" If Cells(i, 1) = Cells(i, 2) Then MsgBox "一致" i = i + 1 ElseIf Cells(i, 1) <> Cells(i, 2) Then MsgBox "不一致" i = i + 1 End If Loop End Sub いまはまだこの程度のレベルです 宜しくお願いします。

  • 実行時エラー13 型が一致しません。エラー2029

    エクセルです。 A1に「=a」と文字が入っていて、 #NAME? となります。 その状態でvbaで セルA1に「=a」が入っているのなら としたい為、 Sub test() If Cells(1, 1) = "=a" Then End If End Sub こうしたのですが、 実行時エラー13 型が一致しません。 になります。 vba中断中に、Cells(1, 1)の部分にマウスカーソルを当ててみると エラー 2029 となっています。 If Cells(1, 1) = "=a" Then が無理なら、 If Cells(1, 1) = "#NAME?" Then なら行けるかな?と思いましたが、 全く同じエラーになります。 最終的に何がやりたいかと言うと、 Sub test() If Cells(1, 1) = "=a" Then Rows(1).delele End If End Sub のように、#NAME?の場合は、その行を削除したいです。

  • マクロif文での条件式について

    マクロ初心者です。Excel2003を使用しています。 仕事上で使用しているエクセル表より、ある値以上の項目を抽出し、その値を用いて計算結果を出すためのマクロを作成いたしました。いろいろなサイトを参考にして自分なりに書いてみたのですが、どうしてもうまくいきません。 表は簡単なもので、以下のようなものです。 1 9 2 24 3 45 4 67 1列目は使用濃度、2列目は測定値です。この測定値が30より大になった項目を抽出し、計算式にその値を代入し計算結果として出したいのです。また、全ての測定値が30以下だった場合は、計算結果の欄に”<30”とのように表示をさせたいと考えています。 以下のようにマクロを書いてみました。 Sub Macro1() For i = 1 to 4 if Worksheets("sheet1").cells(i , 2).value <=30 then Range("A5")=0 '測定値が=<30だった場合は計算をしないので、フラグとして値を入力 Elseif Worksheets("sheet1").cells(i , 2).value > 30 then Range("A5")=Cells(i , 1) Range("B5")=Cells(i , 2) Exit for Endif if Worksheets("sheet1").Range("A5").value > 0 then Range("A6").Formula ="=(50-B5) / A5" Elseif Worksheets("sheet1").Range("A5").value = 0 then Range("A6") ="<30" Else Endif Next i End Sub >30だった項目の抽出まではできたのですが、計算値をだすところがどうしてもうまくいかず、A6セルにはどんな値でも”<30”と入力されてしまいます。 マクロの基本的なルールなどがまだまだ未熟なので、基本的な構文も書けていないと思います。 全然方向性が違うかもしれないので、そういった点も含めてご教示いただけたら幸いです。 分かりにくいかもしれませんが、どうぞよろしくお願いいたします。

専門家に質問してみよう