[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『文字列→数値をセルで一括処理』(hym)
お世話になっております。
表題の件について、助言を頂ければと思います。
桁数が可変のとある数値が文字列としてセルに入っています。
それを.value = .valueで数値に変換しようとしたところ、
3232→20000964
4315→446102
8610→3232
4084→20000964
といった具合に元の数値より桁数が変わり、
数字も全く別物に変わってしまいます。
特に「20000964」という数字が多いように感じます。
これは元のデータにも存在する数値なのですが、
これが何か変換の妨げになっているのでしょうか。
調べてもこのような事象について情報を得られず、
困っております。宜しくお願い致します。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
説明不足ですみません。以下、コードです。
Set findCell = Range(Cells(1, 1), Cells(1, 50)).CurrentRegion.Find _
(What:=keyList(keyCt, 0), LookIn:=xlValues, LookAt:=xlWhole)
If findCell Is Nothing Then MsgBox "ファイルに当該項目が見つかりませんでした。" & vbLf & _ "項目名の相違、存在有無を確認してください。" & vbLf & vbLf & _ "ファイル名:" & fileName & vbLf & _ "項目名:" & Replace(keyList(keyCt, 1), vbLf, "") MsgBox "処理を終了します。" Application.StatusBar = False Exit Sub Else 'コードは数値データに変換 If keyList(keyCt, 0) = "品目" & vbLf & "コード" Or keyList(keyCt, 0) = "仕入先" & vbLf & "コード" Then If keyList(keyCt, 0) = "品目" & vbLf & "コード" Then keyList(keyCt, 1) = Val(keyList(keyCt, 1)) End If ★Range(Cells(2, findCell.Column), Cells(Cells(Rows.Count, 1).End(xlUp).Row, findCell.Column)).Value = _ Range(Cells(2, findCell.Column), Cells(Cells(Rows.Count, 1).End(xlUp).Row, findCell.Column)).Value
End If
'仕入先が区分の場合は別処理 If keyList(keyCt, 0) <> "仕入先" & vbLf & "コード" And keyList(keyCt, 1) <> "個別指定" Then Range("A1").AutoFilter findCell.Column, keyList(keyCt, 1) ElseIf keyList(keyCt, 0) = "仕入先" & vbLf & "コード" And keyList(keyCt, 1) = "個別指定" Then keyList(5, 1) = Val(Me.venCode.Value) Range("A1").AutoFilter findCell.Column, keyList(keyCt, 1) ElseIf keyList(keyCt, 0) = "仕入先" & vbLf & "コード" And keyList(keyCt, 1) <> "個別指定" Then sumFlg = 1 End If End If
この処理はループの中にあり、
?@指定の列名を検索し、あれば特定のキーでフィルタをかけています。
?Aその中で更に特定の項目名について、文字列→数値に変換しています。
?Bデバックで当該処理(★)に分岐し、指定の場所に処理がされることを確認しています。
★の処理を行う元データは文字列だったり、数値になっていたりします。
文字列の場合は書式エラー(セルの左上に緑がついている)状態です。
再度別ファイルにて同じ処理を行った結果も載せておきます。
元データ(文字列)→変換後
0918→1102182
3984→1590102
1147→1409534
3083→1590101
4355→1100060
(hym) 2017/06/09(金) 14:52
★の処理を行う前にフィルタがかかっていたとしても、
特に影響はありませんよね…?;
処理では同じ範囲をVelue値で埋めているわけですし…
(hym) 2017/06/09(金) 15:18
>Range(Cells(2, findCell.Column), Cells(Cells(Rows.Count, 1).End(xlUp).Row, findCell.Column)) Range(開始セル,終点セル)という記述にならないとエラーになるよね。 ここでは何をしたいのかな? (seiya) 2017/06/09(金) 16:14
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.