
仕事で社内のシステムから売上の情報をコピーしてエクセルに貼り付けて処理をしようとしたところ、コピーした数字に「桁区切りのカンマ","」がある関係で、
たとえば 1,234,567 という数字が
1 と 234 と 567 とセルが分割されて貼り付けられてしまいます。
CSVファイルのカンマ区切りデータと同じように情報がカンマで分割されてしまっているようなのですが、貼り付けの際に分割されないようにするにはどうしたらよいでしょうか?
ちなみに、これらデータはスペースで区切られているので一度テキストファイルに保存して、CSVを開くときの区切り文字の設定を「スペース」に設定すればうまく開くのはわかるのですが、コピーして即貼り付けのときにこのようになることを回避する方法はあるのでしょうか?マクロを組んでも構いません。
どうぞ、ご教授、宜しくお願いします。
No.3ベストアンサー
- 回答日時:
Excel2000の場合ですが
メニューの「データ」→「区切り位置」の設定によって
貼り付けるデータが分解される場合があります。
区切りコードにカンマが指定されているのではないでしょうか?
この回答への補足
回答ありがとうございます。
確かにこの方法で区切り位置の変更を行ってから貼り付けることによって、カンマでのセル分割はなくなりました。ありがとうございます。
ただ、なんでこのようなことが発生してしまうのか原因がわかれば、今後の対応も可能なのですが・・・。
ただ、解決策にはなりそうです。
今回はありがとうございました。
原因もわかりました。
まず、他のエクセルマクロを起動した跡にこの現象が起きていたのですが、このマクロの中に、テキストファイルをカンマ区切りで開くようなプログラムがあり、この作業が終わっても、そのシートを閉じても、エクセルが起動されつづけていれば、その”,”カンマ区切りのシート設定が有効になったままになるということが判明しました。
したがって、今回の現象はそういった処理をした後に、カンマの桁区切りを含んだ数字(文字列)をペーストしたから、このようになってしまったということです。
ですので、テキストファイルをカンマ区切りで開くマクロの中に終了時に、デフォルトの状態に戻すようなマクロを組んでおけば影響がないということになりそうです。
エクセルの桁区切りの機能は始めて知ったので、非常に勉強になりました。ありがとうございました。
No.5
- 回答日時:
こんにちは。
始めに長文すみません。本件は HTML は全く関係ないみたいです。忘れて下さい。混乱させてすみません
でした。Hayashi_Trek さん、勉強になりました^^
もう解決かもしれませんが、ちょっと違う視点から VBA コードを書いてみました
ので、良かったらお試し下さい。コードの概略は、
1. クリップボードの文字列を読み込み
2. 1.の文字列のうち、数字桁区切りのカンマを置換で削除
3. クリップボードへ加工済みの文字列を転送
4. ペースト
です。
Auto_Open を実行すると、次の独自ショートカットキーにマクロを割り当てます。
・[Ctrl]+[Shift]+[V]
メニューから PasteClipBoardData を実行するか、このショートカットキーで
桁区切りカンマが削除されたデータがペーストされます。
余談ですが、今回のクリップボード操作は、
・半角カナは全角カナに置換されてペースト
・英数字は全て半角に置換されてペースト
・特定の文字が追加されてペースト
など色々と応用ができそうです。アドインにしても面白いかもしれません。(^^)
使い方ですが、諸事情で参照設定が必要です。VBE の [ツール]-[参照設定] で
以下のものをチェックしてから、標準モジュールにコピペして下さい。
・参照設定: Microsoft Forms 2.0 Object Library
・参照設定: Microsoft VBScript Regular Expressions x.x
では。
’--------- 以下コード(標準モジュール) --------------------------
Option Explicit
Sub Auto_Open()
'独自ショートカットキー割当
Application.OnKey "+^v", "PasteClipBoardData" '[Ctrl]+[Shift]+[V]
End Sub
Sub Auto_Close()
'独自ショートカットキー割当解除
Application.OnKey "+^v"
End Sub
Sub PasteClipBoardData()
Dim strText As String
On Error GoTo ERROR_HANDLER
' クリップボードのテキストを取得してみる
strText = CB_GetText()
' strText が vbNullString でなければ
If strText <> vbNullString Then
' 加工して再度 ClipBoard に転送
strText = DropOutComma(strText)
strText = Trim$(strText)
Call CB_SetText(strText)
End If
' ペースト
ActiveSheet.Paste
Exit Sub
ERROR_HANDLER:
MsgBox "Error(" & Err.Number & ")" & vbCrLf _
& Err.Description, vbCritical
End Sub
Private Function DropOutComma(ByVal strText As String) As String
'-----------------------------------------------------------------
' @Description: 対象文字列から数値桁区切りのカンマを削除する
' @Param : strText 対象文字列
' @Return : String
'-----------------------------------------------------------------
' 参照設定: Microsoft VBScript Regular Expressions x.x
Dim RE As RegExp
Dim MC As MatchCollection
Dim M As Match
On Error GoTo ERROR_HANDLER
Set RE = New RegExp
With RE
.Pattern = ",(\d{3,})" '<-- 検索後のマッチングパターン
.IgnoreCase = False
.Global = True
End With
Set MC = RE.Execute(strText)
If MC.Count > 0 Then
For Each M In MC
'ここで置換してます
strText = Replace(strText, M.Value, M.SubMatches.Item(0))
Next M
End If
DropOutComma = strText
Set MC = Nothing
Set RE = Nothing
Exit Function
ERROR_HANDLER:
Err.Raise Err.Number, Err.Source, Err.Description
End Function
Private Function CB_GetText() As String
'-----------------------------------------------------------------
' @Description: クリップボードの文字列を取得する (DataObject経由)
' @Return : String
'-----------------------------------------------------------------
'参照設定: Microsoft Forms 2.0 Object Library
Dim CB As DataObject
Dim strText As String
Const TEXT_FORMAT = 1&
On Error GoTo ERROR_HANDLER
Set CB = New DataObject
With CB
.GetFromClipboard
If .GetFormat(TEXT_FORMAT) Then
strText = .GetText
Else
strText = vbNullString
End If
End With
Set CB = Nothing
CB_GetText = strText
Exit Function
ERROR_HANDLER:
Err.Raise Err.Number, Err.Source, Err.Description
End Function
Private Function CB_SetText(ByVal strText As String) As Boolean
'-----------------------------------------------------------------
' @Description: クリップボードに対象文字列を転送する (DataObject経由)
' @Param : strText 対象文字列
' @Return : Boolean 成功 True/失敗 False
'-----------------------------------------------------------------
'参照設定: Microsoft Forms 2.0 Object Library
Dim CB As DataObject
Const TEXT_FORMAT = 1&
On Error GoTo ERROR_HANDLER
If strText <> vbNullString Then
Set CB = New DataObject
With CB
.Clear
' DataObject にテキストを転送
.SetText strText, TEXT_FORMAT
' DataObject からクリップボードへ転送
.PutInClipboard
End With
Set CB = Nothing
CB_SetText = True
End If
Exit Function
ERROR_HANDLER:
Err.Raise Err.Number, Err.Source, Err.Description
End Function
何度も回答いただきありがとうございます。
それにこれだけのマクロをわざわざ組んでいただいて本当にいろいろとありがとうございます。
私にはここまでのマクロを組むだけの力がありませんが、色々と勉強になりました。
ありがとうございました。
No.4
- 回答日時:
ああ、、社内システムってのは ブラウザ上で稼動しているものですか?
数字の間に タブコードが入ってるのだとか、スタイルシート絡みの影響
ではないかと思いますが、現状ではイマイチ確信をもてません。
ブラウザ上で右クリックし、「ソースの表示」でその問題の数字部分の
HTMLソースを補足して下さい。
この回答への補足
確かにプラウザ上(エクスプローラー)で稼動していますが、HTMLで表示されているのではなく、なんていうんでしょう?これ?
バックが黒い画面に緑色の文字で表示されているのです。DOSでしょうか?ウインドウズでODSのコマンドラインを使う画面に似ています。これでもHTMLなのでしょうか?ツールバーなどが表示されないので、ソースの表示も出来ません。
プラウザ上とは言わないのでしょうか?
No.1
- 回答日時:
1,234,567が
どのような書式になっているかわかりませんが、
普通に1,234,567 と入れてコピーしたけど問題は
なかったです。
一応、貼り付けする時に、右クリック→形式を指定して
貼り付け→値と数値の書式でできませんか?
この回答への補足
早速の回答ありがとうございます。
形式を選択して貼り付けをしようと思ったのですが、選択できる形式が「Unicodeテキスト」と「テキスト」しか出てこなく、いわゆる書式や値、数式などを選択できません。
ao777さんがおっしゃるとおり、メモ帳に自分でキーボードを使って1,234,567と打ってからコピーするとちゃんと一つのセルに収まりますねぇ・・・。
なにか違いがあるのか確認してみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
先着1,000名様に1,000円分もらえる!
教えて!gooから感謝をこめて電子書籍1,000円分プレゼント
-
エクセルにペーストする際にカンマ等をセルで分ける方法
Excel(エクセル)
-
【エクセル】区切り位置で分割したセルを元に戻すには
Excel(エクセル)
-
エクセルで「データ」の「区切り位置」について
その他(Microsoft Office)
-
4
貼り付けで複数セルに貼り付けたい
Excel(エクセル)
-
5
CSVファイルの中で、「 , 」カンマを使いたい
その他(コンピューター・テクノロジー)
-
6
excelデータをコンマ付きテキストで出力したい
Excel(エクセル)
-
7
Excel2010のTABテキスト貼付けについて
その他(Microsoft Office)
-
8
エクセルで条件に一致したセルの隣のセルを取得したい
その他(Microsoft Office)
-
9
HTMLのソースをエクセルに貼り付ける方法
Excel(エクセル)
-
10
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
11
VBA マクロ実行時エラー’1004RangeクラスのPasteSpecialメソッドが失敗
Access(アクセス)
-
12
エクセル 区切り位置 スペースを自動で区切る
Excel(エクセル)
-
13
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
14
カンマ区切りの数字をCSVファイルにインポートする時どうすれば?
Excel(エクセル)
-
15
Outlookにて定期的に自動送信したい
PowerPoint(パワーポイント)
-
16
Excelで指数表現しないようにする方法
Excel(エクセル)
-
17
エクセルのメニューバーが灰色で
Excel(エクセル)
-
18
【エクセル】区切り文字が含まれるデータを縦に展開する方法
Excel(エクセル)
-
19
selectした結果の余計な余白を取るにはどうしたらよいのでしょうか
Oracle
-
20
excelに貼り付けた数値が勝手に変わってしまう
その他(Microsoft Office)
関連するQ&A
- 1 数値を桁区切りのセルに分割表示したいのです。
- 2 excel2003 選択セル内データ→1個のセルにカンマ区切りデータ
- 3 Excel 桁区切りの カンマ ショートカットキー
- 4 【Excel2000】桁区切りのカンマを他の記号にする事はできますか?
- 5 ExcelVBAで、 フォルダにある複数のテキストファイル(タブ区切り)を CSV(カンマ区切り)に
- 6 エクセルでカンマ区切りのままつながった文字列の分割
- 7 EXCEL VBA カンマ区切りの文字を分割したい
- 8 エクセルフィルタ機能1セルにカンマ区切り複数データ
- 9 【VBA】条件に一致したセル値をカンマ区切りで結合したい
- 10 オートフィルタは金額の桁カンマがあるとカンマなしの数値で抽出できませんか?
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
C#で、テキストボックスの入力...
-
5
大日如来の真言の唱え方
-
6
textareaの入力データで無駄な...
-
7
perlでのSTDINについて
-
8
WORDで改ページすると時々グレ...
-
9
メモ帳からエクセルにセル区切...
-
10
EXCELからCSVにすると余計なカ...
-
11
【Excel VBA】カンマ毎にデータ...
-
12
【ドイツ人に質問です パート2...
-
13
textareaからの入力で改行or空...
-
14
データにカンマが入ったCSVデー...
-
15
dat形式ををcsv形式に変更したい。
-
16
wordの数字の列をexcelに貼り付...
-
17
8進数の10は16進数ではいくつに...
-
18
3桁ごと?4桁ごと?コンマの...
-
19
エクセルのセルごとに貼り付け...
-
20
数字が全角、コンマなし
おすすめ情報