「これはヤバかったな」という遅刻エピソード

初心者です。
会社でRPAを導入することになり、これまで手作業でしていたことを自動化させようとしています。

毎日3-50件の顧客データを処理するのですが、CSVでダウンロードしたら電話番号が数値として認識されてしまい、先頭の0が消えてしまいます。

データ自体は毎回同じ形式でダウンロードできるので、例えば毎回A1:A50が名前、C1:C50が電話番号という風に場所は決まっています。

VBAを使って桁数で調整する方法は携帯番号の11桁と固定電話の10桁(市外局番がない場合は7桁)と相性が悪いので使えません。

自動化のための作業なので何かを手入力するというようなこともできないので、何か良い方法があれば教えていただきたいです。

また、もっと良い方法があるなら教えてください。

A 回答 (4件)

こんにちは!



C列は必ず電話番号になっているのですね。
そしてハイフンなしの数値になっている!という前提で・・・

一例です。

Sub Sample1()
 Dim c As Range
  With Range("C1:C50")
   .NumberFormatLocal = "@"
   .HorizontalAlignment = xlRight
  End With
   For Each c In Range("C1:C50")
    If c <> "" Then
     If Len(c) > 7 And Left(c, 1) <> "0" Then
      c = "0" & c
     End If
    End If
   Next c
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

コピペしたらうまくいきました!ありがとうございました!

他の方もご回答くださいましてありがとうございました。勉強になりました。

お礼日時:2020/08/12 13:58

こんにちは



No3様に賛成です。

VBAでCSVを読む際には文字列として扱うことになりますので、そのままセルに代入しても文字列のまま認識されるはずです。
とは言え、後々の誤操作等で数値化してしまうのを防止する意味からも、予めC列(あるいはシート全体)の書式を「文字列」に設定しておいてから代入するほうがよろしいかと思います。

CSVの読込みに関しては、検索すれば数多く解説サイトが見つかることと思います。
ご参考まで。
    • good
    • 0

こんにちは、


>CSVでダウンロードしたら電話番号が数値として認識されてしまい、先頭の0が消えてしまいます。

自動化するのであれば、データの入出力も自動化すると思いますが、であれば、
VBAでCSVをインポートする際に、カラム3にシングルコーテーションを付けるなどして文字列にするだけで良いのでは?
環境が見えませんが、CSV出力側で加工できるなら、越した事はありませんが
    • good
    • 0

ようするに、まずはExcelのセルの属性をVBAで参照・設定したい・・・ということですよね?


でしたらGoogleなどで「Excel VBA セルの属性 文字列」といったキーワードで検索されてみて下さい。様々な解説ページがヒットするはずです。

セルごとに文字列長が事なる際、それぞれの先頭に文字または文字列を挿入したいという場合も同様の考え方で「Excel VBA セル 文字列の先頭 挿入」といった感じのキーワードで検索されるとよいように思います。

独学で知識を広めたいと思う際は「適当(=適切)な検索キーワードを思い付く」というのも結構大切なスキルになります。(^^;

参考まで。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A