• 締切済み

Excel(SpecialCellsで文字列を探し式の設定)

いつもお世話になっております 先日も質問させて頂きました お世話になり、ありがとうございました 新たな問題が出て、解決できません ご存知の方ご教授お願い致します A列内に数値型と文字列、式の入ったセルが混ざって10000件程度あります ActiveSheet.Range("A:A").SpecialCells(xlCellTypeConstants, xlTextValues).Select で文字列のセルを選択するとこまでは良いのですが、この後選択した文字列の セルに式を入れたいと思うのですが、うまくいきません もしご存知のかたいらっしゃいましたらご教授お願いします この考えは、セル内に文字列の数値が設定されていて オートカルクが出来ない為、数値型に変換しようと思い上記のような ことを考えております セルをWクリックすると数値にはなるのですが、件数が多い為マクロを 組もうと思いました

みんなの回答

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.3

>文字列になっている数値の値が全て1になってしまいました すみません、私が無知でした 簡単な、テストは行ったのですが、数値、文字列、数式とランダムに並べるとダメでした 'ベタな処理になってしまいました Sub test() Dim Rng As Range For Each a In Range("A:A").SpecialCells(xlTextValues) Rng.Value = Rng.Value Next End Sub 今度は、3万行内、対象のセルは1万強行 私の環境で5秒強 ただ、数式が簡単なものだったので、参考程度に 今回は、私も勉強になりました 有難う御座いました

Tori_Mayo
質問者

お礼

お世話になっております >すみません、私が無知でした いえいえ、とんでもないです >簡単な、テストは行ったのですが、数値、文字列、数式とランダムに並べると >ダメでした >'ベタな処理になってしまいました >Sub test() >Dim Rng As Range >For Each a In Range("A:A").SpecialCells(xlTextValues) >Rng.Value = Rng.Value >Next >End Sub >今度は、3万行内、対象のセルは1万強行 >私の環境で5秒強 >ただ、数式が簡単なものだったので、参考程度に 私も上記のような処理で文字列だけを対象にするようにしました >今回は、私も勉強になりました 有難う御座いました 私もSpecialCellsが知れて大変勉強になりました ありがとうございました

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

数式を設定するのであれば Range("A:A").SpecialCells(xlTextValues).Formula = "=A1+B1" 文字の数字を数値化するのであれば Range("A:A").SpecialCells(xlTextValues).Value = Range("A:A").SpecialCells(xlTextValues).Value 前回指摘のあったactivesheet.ですが、処理対象のシートを表示して マクロを実行すれば必要ないはずなのですが???

Tori_Mayo
質問者

お礼

お世話になっております 返信遅れましたm(_ _)m >Range("A:A").SpecialCells(xlTextValues).Value = Range("A:A").SpecialCells >(xlTextValues).Value A列にデータをn件用意し、数値型、文字列、式とランダムに設定し 上記内容を実行したところ文字列になっている数値の値が全て1になってしまいました。使い方が間違っておりますでしょか? 私としては設定されている数字がそのまま数値になってほしかったのですが・・ >前回指摘のあったactivesheet.ですが、処理対象のシートを表示して >マクロを実行すれば必要ないはずなのですが??? すみません。私の実行の仕方が間違ってたみたいです うまくいきました

  • Sinogi
  • ベストアンサー率27% (72/260)
回答No.1

マクロではなく関数で =IF(ISNUMBER(A1*1),A1*1,"") では目的に沿わないでしょうか? 列挿入してよいならB列とか 別シートから目的のセルを参照するとか方法はあるとおもいます。

Tori_Mayo
質問者

お礼

お世話になっております 返信遅れましたm(_ _)m 式を含むセルもあるので、すみませんが上記方法は 若干厳しいです アドバイスを頂いたのにすみません。