• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:if 文などで「""」を返した場合の空白文字列をブランクにしたい)

VBAで空の文字列をブランクに変える方法

このQ&Aのポイント
  • VBAを使用して、特定の範囲内の空の文字列をブランクに変える方法について教えてください。
  • Excel上でVBAを使用して、特定のセル範囲(B1:D50)内の空の文字列をブランクに変換する方法を教えてください。
  • Windows 7 x64とOffice 2007を使用しています。VBAで空の文字列をブランクに変える方法を教えてください。

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

  • ベストアンサー
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.7

下記を試してみてください。 With Range("B1:D50") .Value = .Value End With

rose_web
質問者

お礼

ご回答有り難うございます! 処理に掛かる時間が圧倒的に早くなりました! 今回はこれをご利用させて頂きたいと思います。 本当に有り難うございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (6)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

>シートAの内容コピーして、シートBに貼り付け際に(値のみ) >シートBに空白の文字列として貼り付けされるため、 いわゆる「値貼り付け」で、="" というものをコピーし、別の所に貼り付けると、痕跡としては残るけれども、何も入っていないかもしれません。 もしかしたら、マクロは不要かもしれませんが、試しに使ってみてください。(標準モジュールが最適) 以下はループしていませんから、完全に削除されたか確かめるためには、同じプロシージャで、二度マクロを行う必要があります。 Sub DeleteUnVisibleString()  Dim rng As Range  Dim c As Variant  Dim iFlg As Integer  On Error Resume Next  Set rng = Range("B1:D50").SpecialCells(xlCellTypeFormulas, xlTextValues)  iFlg = 0  If rng Is Nothing Then   Set rng = Range("B1:D50").SpecialCells(xlCellTypeConstants, xlTextValues)   iFlg = 1  End If  On Error GoTo 0  Application.ScreenUpdating = False  If Not rng Is Nothing Then   For Each c In rng    If Trim(c.Value) = "" Then     c.ClearContents    End If   Next   MsgBox rng.Cells.Count & "個の" & IIf(iFlg, "空白値の", "数式の空白値の") & "セルを削除しました。", vbInformation  Else   MsgBox "空白値の文字列は見つかりません。", vbExclamation  End If  Application.ScreenUpdating = True End Sub

rose_web
質問者

お礼

ご回答有り難うございます! 問題なく削除されました。 削除された数もちゃんとでました。 本当に、何度も何度もご教授して頂き有り難うございます!

全文を見る
すると、全ての回答が全文表示されます。
  • foolboy
  • ベストアンサー率23% (34/146)
回答No.5

試しに書いてみました。 これで如何でしょうか。 Sub test() Dim a As Integer Dim b As Integer For b = 2 To 4 For a = 1 To 50 If Cells(a, b).Value = "" Then Cells(a, b).ClearContents End If Next a Next b End Sub

rose_web
質問者

お礼

早速のご返答有り難うございます! 実際に挿入したマクロです。 Dim ma As Integer Dim mb As Integer For mb = 2 To 5 For ma = 1 To 100 If Cells(ma, mb).Value = "" Then Cells(ma, mb).ClearContents End If Next ma Next mb 処理に数秒掛かるのですね! ウェイト時間に少しビックリしましたが、問題なくクリアされております! 本当に有り難うございました! PS:もう少し軽い処理があるかもしれないので、ご回答をもう少し受付させて下さい。

全文を見る
すると、全ての回答が全文表示されます。
  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.4

Range.ClearContentsあたりでしょうか。 対象の各セルに対して""と同値ならClearContents、の繰り返しで良さそうに思えますが。

全文を見る
すると、全ての回答が全文表示されます。
  • foolboy
  • ベストアンサー率23% (34/146)
回答No.3

確かに、空白文字列で返されるのはもどかしいときがありますね。 すでに任意の値が入力されているのかどうかが分かりませんが、入力されている、という前提でお話しします。 多少発想を変えて、以下のようにしてみてはいかがでしょうか。 例) If Range("B1").value="" then Range("B1").clear ※clearではなくdeleteかもしれません。 メソッド等に間違いがあるかも知れませんが、簡単に言葉にすると「空白文字列をデリートする」というだけです。

rose_web
質問者

補足

ご回答有り難うございます。 B1:D50には任意の文字が記入されたセルと 空白文字列のセルが混合しております。 その中から空白文字列のセルを選択し、デリートしたいのです。 ご教授頂いた内容を任意の範囲で実行しましたところ、 実行時エラー13、型が一致しませんと表示されました。 If Range("B1:D50").Value = "" Then Range("B1:D50").Delete End If どの部分がおかしいのでしょうか?ご教授頂けると幸いです。 よろしくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

関数のIF関数を使ってあるセルを空白("")にしてもそのセルには関数が入力されている限り空白にすることはできませんね。VBAを使って空白にしようとしてもそのセルに関数が入力されている限りは無理で、その関数式を消去しない限り空白にすることはできないですね。 なぜVBAまで使って空白にすることが必要なのでしょう。 例えばCOUNTA関数では関数が入って空白のセルまで数えられてしまいますね。関数を使って文字列の入ったセルの数を求めるのにCOUNTA関数ではなく次のような式にすることで関数で空白となったセルの数を除いた数を求めることができます。参考までに。 =COUNTIF(A1:A100,"?*")

rose_web
質問者

補足

ご回答有り難うございます。 シートAの内容コピーして、シートBに貼り付け際に(値のみ) シートBに空白の文字列として貼り付けされるため、 シートBの任意の範囲において空白文字列を選択しDELETE処理を行いたいのです。 説明が言葉足らずで申し訳御座いません。 どうぞお力をお貸し下さい。よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • layy
  • ベストアンサー率23% (292/1222)
回答No.1

何も入っていないA1セルで =LEN(A1)は「0」 空白が入っているA2セルで =LEN(A2)は「1」 やりたいことはこういう判定でしょうか?。

rose_web
質問者

補足

ご回答有り難うございます。 シートAの内容コピーして、シートBに貼り付け際に(値のみ) シートBに空白の文字列として貼り付けされるため、 シートBの任意の範囲において空白文字列を選択しDELETE処理を行いたいのです。 説明が言葉足らずで申し訳御座いません。 どうぞお力をお貸し下さい。よろしくお願いします。 ※選択したい範囲は空白では無く、空の文字列になります。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excelの空白文字列 "" と空白セルについて

    Excelのある項目がブランクだったら計算をさせる式をくみこんだのですが、そのある項目が本当にブランクだったらOKなのですが、空白文字列 ""の場合に計算がされません。 空白文字列 ""をブランクとみるようにするには、どうしたらよいでしょうか。 よろしくお願いします

  • Excel97で、If文をなんとかしたい

    IF文でなんとかなりそうなんですが、IF文を使った事がなくて。 A列   B列   C列    任意の位置のセルD 数式  文字列   数式  文字列 数式  文字列 数式  文字列 こんな表で、Bの文字列の値と、Dのセルの値が一致した時、Aの数式の値(数字)をCの列に表示させ、BとDの文字が一致しない時は、”エラー”を表示させたいんですが、どういう風にすればいいのでしょうか? IF文を使えばいいのでしょうか? どういう風に、数式を立てればいいのかわかりません。 どなたか詳しい方、教えていただけませんか?

  • 任意の文字を含む文字列を置換する(if文にて)

    こんにちはtmgmです。 EXCELについての質問です。 今セルA1~A20までに"CELL1"~"CELL20"の文字が入っています。A1=CELL1,A2=CELL2,A3=CELL3のように20まで。 この中からCELL番号に"2"が含まれるものを探し出して隣のセル(B1~B20)にチェックを付けたいです。 私はif文でワイルドカードでも使ってこんな感じで書けばいいのかと思って試しにやってみました。 例えばB1セルに =if(A1="*2*","OK","NG") のように書けばいいのかと思いました。しかしこれでは"*2*"が文字列として認識されてしまい、ワイルドカードとしての機能を果たしてくれません。 どのようにかけば ”任意の文字を含むセルを検索してTRUEの場合、値を返す”というif文(もしくはその他?)ができるでしょうか? 分かる方ご返答宜しく御願いします。

  • 文字列の全ての空白を取り除くにはどうしたらよいでしょうか。

    文字列の全ての空白を取り除くにはどうしたらよいでしょうか。 Excel VBAで文字列の前後の空白を取り除くにはTrimを使ってできます。 文字列内にある空白をすべて取り除くにはTrimではできませんでした。 なにか良い方法はないでしょうか。 よろしくお願いします。

  • エクセルVBAで特定の文字列が見つかったらIF文以下を実行するには?

    お世話になります。 エクセルVBAで、特定の1列を範囲指定して、範囲内のそれぞれのセルにある特定の文字列が見つかった場合にIF文以下の命令を実行するには、どのようにすればよろしいのでしょうか。それぞれの文字列の中の特定の文字列の位置は決まっていません。 よろしくお願いします。

  • if エラー文字を空白にしたい#VALUE!

    #VALUE!や#REF!を空白にするには? A列に日付が入っていて、=A2-A1のように日付を引いてるのですが 文字が入ったり一番上だとエラーが返ります。 エラーの場合はエラー文字を空白にしたいのですが どうすればいいですか? IFステートメントを使うようですが数式がわかりません。

  • マクロのIF文について

    エクセルで、特定の列(可変)を文字が入っているところまで選択し、その中に空白セルがあれば入力を促すメッセージがでるように、マクロでIF文を組むにはどのようにすればよいですか?

  • セル内文字を切り取りその列の空白セルに貼付け

    B列3行目から添付のようにセル内にカンマを含む文字がありカンマで区切った文字ごとに切り取り矢印右のように同B列の次の空白行に順に貼り付けたく、その際カンマは削除したいのですが行数が多くてできればVBAコードがお分かりなる方宜しくお願いします。 環境はwindows7 office2013です。

  • 文字列から空白を取り除きたいのですが

    C言語を勉強しはじめて間もない者です。 文字列から空白を取り除く(空白は左に詰めることで埋める)処理をしたいのですが、下記のようなやり方でうまくできなくて困っています。 ↓を実行すると" 1234"なら"12344"になるはずだったのですが、うまくいきません。何がおかしいのでしょうか?? よろしければご教授願います。 ※文字列は半角のみ想定しています。 int i = 0; char str[] = " 1 23 4 5"; char *p; p = str;   while( *p != '\0' ){     if ( isspace(*p) != 0 ){       while( *(p + i + 1) != '\0' ){         *(p + i) = *(p + i + 1);         i++;       }     }     p++;   }  

  • 文字列中の空白削除について

    PHP4で、文字列の前後に空白が場合はtrimを使って削除可能ですが、文字列の中に含まれていたとき、その空白を削除するいい方法はあるでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう