Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
  • ベストアンサー

エクセルのVBAで教えたください。セルの文字数が特定の文字数の時のみ下2桁を書き出す方法。

VBA初心者です。仕事での作業で困っています。 大量の数値データが1列にあります。それぞれの数値の文字数を関数で隣のセルに表示しています。その文字数が例えば4文字の時だけ下2桁の数字をさらに隣のセルに書き出したいのですが、どのような式を作ればよいのでしょうか。 こんなイメージです。 セル1  セル2  セル3 1025   4    25 124556  6 12     2 1254   4    54 6587   4    87 よろしくお願いいたします。m(_ _)m

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

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

こんにちは。 たぶん、何かの製作の途中だと思います。ですが、VBAで厳密には、「数値の文字数」はないのですが、VB系は、そこらへんが、あいまいなんですね。 曖昧なままで作ると、このようになります。 (小数点を含んだものは排除されます) Sub Test1()   Dim c As Variant   For Each c In Range("A1", Range("A65536").End(xlUp))     If IsNumeric(c.Value) Then       If Abs(c.Value) Like "####" Then         c.Offset(, 1).Value = Right(c.Value, 2)       End If     End If   Next End Sub もし、プログラムらしい書き方を望むようでしたら、以下のようにしたらよいと思います。 1,2 とも、負の符号が必要な場合は、Sgn 関数でとってください。こちらは、小数点以下を取り去った数値の下2桁を出します。 Sub Test2()   Dim c As Variant   For Each c In Range("A1", Range("A65536").End(xlUp))     If VarType(c) = vbDouble Then       If Int(Log(Abs(c.Value)) / Log(10#)) = 3 Then         c.Offset(, 1).Value = Fix(Abs(c.Value)) - Int(Abs(c.Value) / 100) * 100       End If     End If   Next End Sub

aurakun
質問者

お礼

お察しの通りデータ加工プログラムを考案中です。VBA初心者のためじっくり勉強させていただきます。ご回答ありがとうございました。

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

その他の回答 (4)

回答No.4

VBA使わなくても関数でよいのではないでしょうか? セル1をA1として B1に =LEN(A1) C1に =IF(B1=4,RIGHT(A1,2)) これで、B1、C1を下までコピー また、セル2を省いてB1に =IF(LEN(A1)=4,RIGHT(A1,2)) で一回で求めることも可能です。

すると、全ての回答が全文表示されます。
  • marbin
  • ベストアンサー率27% (636/2290)
回答No.3

こっちの方がいいかな? =IF(LEN(A1)=4,TEXT(MOD(A1,100),"00"),"")

すると、全ての回答が全文表示されます。
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

別にVBAで行う内容でも無いと思いますが・・・。 A1:1234 B1:=LEN(A1) C1:=IF(B1=4,RIGHT(A1,2),"") B1とC1の関数をあわせて =IF(LEN(A1)=4,RIGHT(A1,2),"") 関数で表示された列をコピーして、形式を選択して貼り付けで「値」を選択して貼り付けすれば数値に変換できます。

aurakun
質問者

お礼

恥ずかしながらRIGHT関数というもの知りませんでした。ありがとうございました。参考にさせていただきます。

すると、全ての回答が全文表示されます。
  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

関数ではだめですか? =IF(LEN(A1)=4,MOD(A1,100),"") VBAの場合も考え方は同じです。

aurakun
質問者

お礼

ご回答ありがとうございました。早速試してみます。

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

関連するQ&A