Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5545 / 13645 ツリー ←次へ | 前へ→

【50219】結果は#VALUE! 泉 道男 07/7/14(土) 11:24 お礼[未読]
【50220】Re:結果は#VALUE! かみちゃん 07/7/14(土) 12:10 発言[未読]
【50221】Re:結果は#VALUE! ichinose 07/7/14(土) 17:00 発言[未読]

【50219】結果は#VALUE!
お礼  泉 道男 E-MAIL  - 07/7/14(土) 11:24 -

引用なし
パスワード
    かみちゃん 早速の回答をありがとうございました。おっしゃる通りに1をすぐ隣のセルに入力し、その隣に =1*a1 の計算式を入れて見ましたが結果は#VALUE!
となり 文字列の数字が計算のできる数値に変わりません。下の数字がA1からA70まで並んでいます。実はA2からA1を引き結果は-19になります。それを繰り返すと次は1となり、更に-5、6、17となるはずですが文字列に1をかけても数値に変わらないので困っています。尚、マクロのことも知らない初心者です。よろしくお願いいたします。 trim(Arial) 関数の意味も分からないのです。

 1,200 
 1,181  -19
 1,182   1
 1,177   -5
 1,183   6
 1,200   17
 1,220 
 1,208 
 1,215 
 1,211 
 1,227 
 1,244 
 1,239 
 1,238 
 1,268 
 1,248 
 1,227 
 1,243 
 1,225 
 1,226 

【50220】Re:結果は#VALUE!
発言  かみちゃん  - 07/7/14(土) 12:10 -

引用なし
パスワード
   こんにちは。かみちゃん です。

> 早速の回答をありがとうございました。

[50216]のご質問のことですね。
コメントに返信する場合は、コメントの右上の「返信」をクリックして、投稿内容
を書くようにしましょう。
そうすると、スレッドがつながります。

> おっしゃる通りに1をすぐ隣のセルに入力し、その隣に =1*a1 の計算式を入れて見ました

私は、そのようなことを書いていません。
1は、どこか適当なセルに、ひとつだけ入力していただければいいです。
[50217]のコメントをよく読んでください。
「形式を選択して貼り付け」がポイントであって、計算式を入れてとは書いていません。

> マクロのことも知らない初心者です。よろしくお願いいたします。
> trim(Arial) 関数の意味も分からないのです。

私が申し上げているのは、マクロを使う方法ではありません。
trim(Arial) 関数というのは、ありません。
それは、関数ではなく、フォントなのではないでしょうか?
いずれにしても、全く関係ありません。

【50221】Re:結果は#VALUE!
発言  ichinose  - 07/7/14(土) 17:00 -

引用なし
パスワード
   ▼泉 道男 さん:
こんにちは。

>下の数字がA1からA70まで並んでいます。実はA2からA1を引き結果は-19になります。それを繰り返すと次は1となり、更に-5、6、17となるはずですが文字列に1をかけても数値に変わらないので困っています。尚、マクロのことも知らない初心者です。よろしくお願いいたします。

>
> 1,200 
> 1,181  -19
> 1,182   1
> 1,177   -5
> 1,183   6
> 1,200   17
> 1,220 
> 1,208 
> 1,215 
> 1,211 
> 1,227 
> 1,244 
> 1,239 
> 1,238 
> 1,268 
> 1,248 
> 1,227 
> 1,243 
> 1,225 
> 1,226 
このデータがアクティブなシートのセルA1から入力されていたとすると・・、

標準モジュールに
'===========================================================
Sub main()
  Dim rng As Range
  Dim crng As Range
  Set rng = Range("a1", Cells(Rows.Count, "a").End(xlUp))
  For Each crng In rng
    crng.Offset(0, 1).Value = get_num(crng.Value)
    Next
End Sub
'===========================================================
Function get_num(mystr As Variant) As Variant
  With CreateObject("VBScript.RegExp")
    .Pattern = "[0123456789,\.]+"
    .IgnoreCase = True
    .Global = True
   Set Matches = .Execute(mystr)
   get_num = False
   If Matches.Count > 0 Then
     On Error Resume Next
     get_num = CDbl(Replace(Matches(0).Value, ",", ""))
     If Err.Number <> 0 Then
      get_num = False
      End If
     End If
   End With
End Function


として、mainを実行してみてください。


対応するB列に数字のみを抜粋します。


A1           B1
&nbsp;1,200&nbsp;    1200

関数get_numは、ちょっとチェックが甘いけど、まあよいでしょう!!

試して見てください

5545 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free