• ベストアンサー

エクセルで空白セルを空セルに

B1にセルをおきます。A1の内容を比較します。 if A1=0 then B1を空セルに else A1をB1に代入 endif 同様にA列の内容を比較し結果をB列に格納します。 VBAではどのように記述しますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

該当のシートのコードに下記のように記述 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 Then 'A列のみ判定 If Target = 0 Then '変更内容が0またはブランクなら Target.Offset(0, 1).Clear '同じ行のB列の内容をクリア Else Target.Offset(0, 1) = Target '同じ行のB列にA列の値をセット End If End If End Sub

marutin99
質問者

お礼

ありがとうございます。たすかりました。

その他の回答 (2)

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

>B1にセルをおきます 意味不明。B1はセルの番地じゃないの。 >A1の内容を比較します 何とA1を比較するの? >同様にA列の内容を比較し結果をB列に格納します 同様に第2行目以下についても、同じ作業を行う。 >if A1=0 then B1を空セルに このように Thenの前で改行したらエラーになるのではないですか。 Sub test01() if range("A1")=0 then Range("B1")=0 End Sub はエラー ↓ Sub test01() If Range("A1") = 0 Then Range("B1") = 0 Else Range("B1") = Range("A1") End If End Sub End If これを行変化させやすいように Sub test02() d = 10 For i = 1 To d If Cells(i, "A") = 0 Then Cells(i, "B") = 0 Else Cells(i, "B") = Cells(i, "A") End If Next i End Sub 質問の文章はしっかり表現してください。 それとVBA(マクロ)の本でもまず1冊読んでから質問することをお勧めします。

marutin99
質問者

お礼

ご指摘ありがとうございます。今回は大至急修正しないといけなかった為本を読む時間もありませんでした。次回から気をつけます。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

if Range("A1") = 0 then 'B1を空セルに Range("B1") = "" else 'A1をB1に代入 Range("B1") = Range("A1") endif

marutin99
質問者

お礼

ありがとうございます。

関連するQ&A

  • 空白セルの記述方法

    Excel VBAで日付データがA列、通貨データがB列にあるとして シート1のセル(A:1)、セル(B:2)が空白セルとして条件式を作りたいのですが記述方法はどのようになりますか? 下記でよろしいでしょうか? If CDate(sheet1.cell(A:1).value) = Empty then If CCur(sheet1.cell(B:1).value) = Empty then

  • セルが空か0か

    VBでプログラミングをしているのですが、あるセルが空かどうかを調べるために If Cells(0,0)=Empty Then 等という風に書いたらセルA1が0と入力されているときもThen以下が処理されてしまいます、セルA1が0のときと空のときの処理を分けたいのですがどうすればいいか教えてください。

  • セルのIF分の質問です

    セルに入れる IF分を 教えてください NGを 分解してみたのですが・・・・ =IF(N3=1,then     -M2, else     IF(K2=1, then       IF(M2<P3-M3, then          M2      Else         P3-M3,       endif      else          IF(K2=-1,then           IF(M2<M3-P3,then               M2,           Else               M3-P3,            endif         else            0         endif)       endif) endif) N3 は 1 もしくは 0。 K2 は 1,-1,0 の3通りです IF が 5個ですから ) も 5個?(ENDIF も 5個 だし?) といった ことで お手数ですが

  • エクセルVBA Callステートメントについて教えてください。

    いつもお世話になっております。 IF ○○○○ Then Call ○○○○なときのマクロ Else Call ××××なときのマクロ Endif というマクロを書きました。 (実際はかなり長くて複雑です) Callを使用すると、 見た目がすっきりする以外に何かメリット またはデメリットがあるのでしょうか。 以下の場合と何か異なるでしょうか? IF ○○○○ Then '○○○○なときのマクロの内容を記述 ~~~~~~~ Else '××××なときのマクロの内容を記述 ~~~~~~~ Endif ご教示いただければ幸甚です。

  • EXCEL 数式が入った空白セルを数える

    毎度お世話になっています。 質問の内容ですが、例えば下記のようなシートがあるとします。 セルB1、セルC1、セルD1:手入力セル セルA1:数式「=IF(B1="","",B1+C1)」 セルA2:文字列 セルA3:数式「=IF(D1="","",D1*0.1)」 セルA4:文字列 セルA5:A1+A3の計算結果を表示 (※なお、セルA2、A4は数値が入らない) というような場合において、 ●セルB1、C1、D1になにも入力されていない場合、セルA5が空白となる。 ●セルB1、C1にのみ数値が入力されている場合、セルA5の計算結果がセルA1の値のみ。 ●セルD1にのみ数値が入力されている場合も上記と同様に計算結果が表示される。 以上の条件を満たす数式をセルA5に入力したいのですが、 COUNTBLANKは数式が入っている場合には使えず、COUNTAの場合だとセルA1、A3のどちらにも数値が入った場合に表示される、といった数式になります。 IFをいくつも使えば可能とは思いますが、もう少し単純に数式を作れたらと思い質問をさせて頂きました。 よろしければ御回答宜しくお願い致します。 (内容を訂正したため、いったん質問を削除しました。もし御回答中の方が居ましたら申し訳ありませんでした。)

  • エクセルマクロ 【空白セルを無視する方法を教えてください】

    マクロを独学で学び仕事に応用しているのですが、どうしても分からないことが発生してしまい、質問です。 内容は、今、エクセルシートのA1~B5の範囲で A B 1 1 1 2 1 2 3 4 1 5 1 という形で入力されています(見難くてスミマセン)。 この状態から「A列とB列に同じ数字が入力されてれば、メッセージBOXを表示して、なおかつOKボタンを押したら該当セルを赤くする」というマクロを作りたいのですが、本来であれば1行目のみ赤くなるはずなのですが、空白セルが含まれている3行目も赤くなってしまうんです。つまり、空白セルも「同じ値」と認識されているみたいなのですが...。 この場合、空白セルを無視するにはどうしたらよいのですか?教えてください。なお、マクロは以下のように作っています。 Sub ナンバーチェック() Dim Btn As Integer For X = 5 To 10 If Cells(X, "A").Value = Cells(X, "B").Value Then  Btn = MsgBox("同じ数値です", vbOK, "警告")  If Btn = vbOK Then   Cells(X, "A").Interior.ColorIndex = 3 Cells(X, "B").Interior.ColorIndex = 3 End If End If Next End Sub

  • エクセルVBAでセルのクリックイベントについて

    エクセルのVBAでDo Whileループの中で,いずれかのセルがクリック され(アクティブ)になったことを知る方法が分かりません。 調べたいセルの個数は数十個で,セルのクリックを連続的に行い, その度に,ある操作を行いたいのです。 Do while flag=true   if ActiveCell.Address="A1" then ****   if ActiveCell.Address="A2" then ****   if ActiveCell.Address="A3" then ****   (これをいくつか記述)   (ループから抜け出る記述) loop これだと,無限ループに陥ってしまいます。 どなたか,お知恵をお貸しください。

  • セル空白時に月を変更した時の累計使用日数VBA

    お世話になります、エクセルVBA初心者の者です。 '******************************************************************************* ' セル変更した時のイベント '******************************************************************************* Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Long, k As Long, myNum As Long If Intersect(Target, Range("C1,B9:B39")) Is Nothing Or Target.Count > 1 Then Exit Sub Application.EnableEvents = False With Target If .Column = 3 Then myNum = WorksheetFunction.Max(Range("B9:B39")) myDate = Range("C1").Value Range("A9:A39").ClearContents If IsDate(.Value) Then ' ----------A列に日にちを入力---------- For i = 1 To 31 If Month(myDate + i - 1) = Month(.Value) Then Cells(i + 8, "A").Value = Day(myDate + i - 1) Else Cells(i + 8, "A").Value = "" End If Next i ' ----------B列の空白条件---------- If Range("B39").Value = "" Or Range("B38").Value = "" Or Range("B37").Value = "" Or Range("B36").Value = "" Then Range("B9:B39").ClearContents Application.EnableEvents = True End End If ' ----------B列に連続値の入力---------- For i = 9 To 39 If Cells(i, "A").Value = "" Then Cells(i, "B").Value = "" Else Cells(i, "B") = myNum + i - 8 End If Next i End If Else End With Application.EnableEvents = True End Sub 内容はC1には年月(2013年12月)を表示させています。 そして、B9~B39には累計使用日数を表示するVBAを組んでいます。 B9~B39間に適当な数字を入力すると、連続データの数字が入力されるようになります。 そして、C1セルの日付を変更しても連続データが継続して表示されるVBAです。 B39が空白表示の場合(小月ならB38で2月ならB36かB37)でC1セルの年月を変更した場合、連続データを表示させず空白セルを表示させるVBAを組んだつもりです。 しかし、上手く作動しません。もうお手上げです。どこがおかしいのでしょうか?ご教授宜しくお願いします。

  • エクセルVBAで不一致に空白セルを挿入

    エクセル2010です。 A、B列ともソートされています。 ごく少数ですが同一列内に重複するデータもあります。 そして A列に、1行目からA、B、C、E、F、F、H B列に、1行目からA、B、D、E、F、G、I (カンマは実際にはありません。) というような文字列データがある場合 別シートに A列に、1行目からA、B、C、空、E、F、F、空、H、空、 B列に、1行目からA、B、空、D、E、F、空、G、空、I、 (空は空白セルの意味です。) というように、お互いが一致しない場合は空白で飛ばし、一致するものは同じ行にするにはどのような方法がよろしいでしょうか? 例のように少ないデータなら目で見て手作業でできますが、実際は千件以上のデータです。 VBAでも関数でも結構です。よろしくお願いします。

  • VBAで空白セルにのみ数値を代入する方法

    御伺いしたい事があります。 例えば セルA2に何も数値が書かれていない空白状態ならば、VBAでだした数値を代入して終了。 もし空白で無いのならば、セルをA2から1つ下のA3で空白かどうかの判定をする(空白のセルが来るまで続ける) といったように、積み上げ形式でどんどんセルを動きながら代入を行いたいのですが これを行うには、どういったVBAでの記述が必要なのでしょうか? よろしくお願いいたします。

専門家に質問してみよう