在宅ワークのリアルをベテランとビギナーにインタビュー>>

仕事で社内のシステムから売上の情報をコピーしてエクセルに貼り付けて処理をしようとしたところ、コピーした数字に「桁区切りのカンマ","」がある関係で、
たとえば 1,234,567 という数字が
1 と 234 と 567 とセルが分割されて貼り付けられてしまいます。
CSVファイルのカンマ区切りデータと同じように情報がカンマで分割されてしまっているようなのですが、貼り付けの際に分割されないようにするにはどうしたらよいでしょうか?

ちなみに、これらデータはスペースで区切られているので一度テキストファイルに保存して、CSVを開くときの区切り文字の設定を「スペース」に設定すればうまく開くのはわかるのですが、コピーして即貼り付けのときにこのようになることを回避する方法はあるのでしょうか?マクロを組んでも構いません。

どうぞ、ご教授、宜しくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

Excel2000の場合ですが


メニューの「データ」→「区切り位置」の設定によって
貼り付けるデータが分解される場合があります。
区切りコードにカンマが指定されているのではないでしょうか?

この回答への補足

回答ありがとうございます。
確かにこの方法で区切り位置の変更を行ってから貼り付けることによって、カンマでのセル分割はなくなりました。ありがとうございます。
ただ、なんでこのようなことが発生してしまうのか原因がわかれば、今後の対応も可能なのですが・・・。

ただ、解決策にはなりそうです。

補足日時:2006/06/07 17:50
    • good
    • 1
この回答へのお礼

今回はありがとうございました。
原因もわかりました。
まず、他のエクセルマクロを起動した跡にこの現象が起きていたのですが、このマクロの中に、テキストファイルをカンマ区切りで開くようなプログラムがあり、この作業が終わっても、そのシートを閉じても、エクセルが起動されつづけていれば、その”,”カンマ区切りのシート設定が有効になったままになるということが判明しました。
したがって、今回の現象はそういった処理をした後に、カンマの桁区切りを含んだ数字(文字列)をペーストしたから、このようになってしまったということです。
ですので、テキストファイルをカンマ区切りで開くマクロの中に終了時に、デフォルトの状態に戻すようなマクロを組んでおけば影響がないということになりそうです。

エクセルの桁区切りの機能は始めて知ったので、非常に勉強になりました。ありがとうございました。

お礼日時:2006/06/08 19:12

こんにちは。

始めに長文すみません。

本件は 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
    • good
    • 0
この回答へのお礼

何度も回答いただきありがとうございます。
それにこれだけのマクロをわざわざ組んでいただいて本当にいろいろとありがとうございます。
私にはここまでのマクロを組むだけの力がありませんが、色々と勉強になりました。
ありがとうございました。

お礼日時:2006/06/08 19:40

ああ、、社内システムってのは ブラウザ上で稼動しているものですか?



数字の間に タブコードが入ってるのだとか、スタイルシート絡みの影響
ではないかと思いますが、現状ではイマイチ確信をもてません。

ブラウザ上で右クリックし、「ソースの表示」でその問題の数字部分の
HTMLソースを補足して下さい。

この回答への補足

確かにプラウザ上(エクスプローラー)で稼動していますが、HTMLで表示されているのではなく、なんていうんでしょう?これ?
バックが黒い画面に緑色の文字で表示されているのです。DOSでしょうか?ウインドウズでODSのコマンドラインを使う画面に似ています。これでもHTMLなのでしょうか?ツールバーなどが表示されないので、ソースの表示も出来ません。
プラウザ上とは言わないのでしょうか?

補足日時:2006/06/07 18:06
    • good
    • 0

私も再現できないです。



ただ、セルをダブルクリックして編集モードにしてからペーストするか、数式バーにペーストすれば解決する気はします。

この回答への補足

ありがとうございます。
確かにそういった方法もありますね。
ただ、残念ながらコピーしたデータは複数有り、一度に大量のセルに貼り付けたいのです。ひとつひとつでは対応が出来ないのです。
残念です。

補足日時:2006/06/07 12:06
    • good
    • 0

1,234,567が


どのような書式になっているかわかりませんが、
普通に1,234,567 と入れてコピーしたけど問題は
なかったです。
一応、貼り付けする時に、右クリック→形式を指定して
貼り付け→値と数値の書式でできませんか?

この回答への補足

早速の回答ありがとうございます。
形式を選択して貼り付けをしようと思ったのですが、選択できる形式が「Unicodeテキスト」と「テキスト」しか出てこなく、いわゆる書式や値、数式などを選択できません。
ao777さんがおっしゃるとおり、メモ帳に自分でキーボードを使って1,234,567と打ってからコピーするとちゃんと一つのセルに収まりますねぇ・・・。
なにか違いがあるのか確認してみます。

補足日時:2006/06/07 11:58
    • good
    • 1

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QExcel2010のTABテキスト貼付けについて

Excel2010のデータの貼り付けについて教えてください。

Excel2010にてタブ区切りのテキストを貼り付けたところ、単一のセルに
すべてのデータが貼りついてしまいます。
新しいシートを開いても変わりませんが、新しいブックを立ち上げると
タブ毎にセルを(列を)区切って貼り付ける事が出来ます。
なお、Excelのセル(複数列)をコピーした場合は、正しく貼り付けられます。
タブ区切りテキストだけで発生しています。


具体的には
下記のようなタブ区切りテキストをコピーしてExcelに貼り付けました
あいうえお{TAB}かきくけこ

Excel上では一つのセルをActiveにして貼り付け(テキスト形式、Unicode
テキスト双方を試しました)をしたところActiveセルに「あいうえおかきくけこ」
と表示されます。
LEN関数で文字数をカウントすると11文字となっており間にタブが挿入され
ている事が確認できます


解消方法についてご存知の方がいらっしゃいましたらご教授頂けますよう
お願いいたします。m(__)m

Aベストアンサー

問題のブックで,てきとーにデータの入ったセルを選んだ状態で,データタブの「区切り位置」を開始したときに2/3画面で「タブ」のチェックが「外れている」と,ご相談の状況が発生します。


新規に立ち上げたブックなどでは,デフォルトで「タブだけチェックされている」状態になっているので,通常はタブ切りテキストのコピー貼り付けはセル分割されます。区切りの設定を変えて使うと,その状態がブックに保存されます。
問題のブックでこれまでどういう操作の経緯を辿ったのか判りませんが,一回タブで区切る操作を行ってからブックを保存し,改めてタブ混じりデータを貼り付ける操作をしてみてください。

Qexcelデータをコンマ付きテキストで出力したい

おはようございます。
excelデータをコンマ付きテキストで出力したいのですが、その方法を教えてください。

Aベストアンサー

CSVなら
名前をつけて保存で
ファイルの種類でCSV(カンマ区切り)
を選ぶ

Qメモ帳(テキストデータ)をExcelにセルに分けて貼り付ける方法は?

例えば、以下のようなメモ帳(.txt)のデータをExcelに貼り付ける際に、スペースが空いているもの単位で、セル別に貼り付ける方法はございますでしょうか?

(データ例)
100 150 130
200 200 230

このデータについては、100→A1、150→B1などセル毎に貼り付けたいと考えております。

A1 B1 C1
A2 B2 C2

Aベストアンサー

Excelのシートを開いた状態で、
データ→外部データの取り込みでファイル名(Txtファイル)を指定し、
スペースによって右・・の欄にチェックを入れ、読み込めば出来ます。

QExcelからテキストへのコピーペースト

Excelのデータをメモ帳へコピーしたいです。

Excelのバージョンは2003です。

Excelのデータは名簿で横方向に名前や住所、電話番号等が打ち込まれています。
それをそのままコピペすると、
メモ帳側では空白が生まれてしまいます。

明らかに不自然ですし、最終的な納品形態では全てその空白を無くさなければいけません。
ただスペース的に2~3マス分ぐらい空いていても、1回バックスペースを押せば無くなりはしますが
1行に複数生じるのと
何百行とあるので、いちいち直すのは正直面倒くさいです。



セルの幅を縮めてみたら平気かなと思いましたが
それでも、何マス分かの空白が生じてしまいます。

機能的に何かで対処可能ですか?
(Excelは仕事で使う事も多いですが、関数等使いませんし、初歩的な事しか知りません)

Aベストアンサー

スペース数文字分くらいの空白のようなものは、Tab 文字です。特にメモ帳特有のものというわけではなく、一般的な文字です。例えば Word でも、キーボードの Tab キーで入力できます(Excel では通常、入力できません)。Word において Tab は、文字列の配置に関する書式を設定する上で、重要な役割を果たします。

さてメモ帳では、Excel と違ってセルという概念がありません。ということは Tab なりカンマなりで文字列どうしの間が区切られていないと、次に続く文字列とつながってしまいますね?だから自動で Tab が入るような仕様にしているのでしょう。

メモ帳で、Tab のどれか 1 つをマウスのドラッグでコピーしてください。次いで、キーボードで Ctrl+A のショートカットキーを押すと、全選択されます。その状態で Ctrl+H を押し、置換のダイアログを開きます。「検索する文字列」ボックスにカーソルを置いて Ctrl+V を押すと、今コピーした Tab が入力されます。「置換後の文字列」に★とか、好きな文字列を入力し、「すべて置換」ボタンを押します。すると、Tab がその文字列に置換されます。スペースのほうが良ければ、★の代わりにスペースを入力して実行してください。


なお他の方々もおっしゃているように、Excel 上で「名前を付けて保存」するときに、「ファイルの種類」から「.csv」とか「.txt」の拡張子で保存するという方法によっても、テキストファイルは作れます。

パソコンが上達するには、何でもかんでも、実際に試してみるのが一番です。

スペース数文字分くらいの空白のようなものは、Tab 文字です。特にメモ帳特有のものというわけではなく、一般的な文字です。例えば Word でも、キーボードの Tab キーで入力できます(Excel では通常、入力できません)。Word において Tab は、文字列の配置に関する書式を設定する上で、重要な役割を果たします。

さてメモ帳では、Excel と違ってセルという概念がありません。ということは Tab なりカンマなりで文字列どうしの間が区切られていないと、次に続く文字列とつながってしまいますね?だから自動で Ta...続きを読む

Qエクセルで条件に一致したセルの隣のセルを取得したい

下のような「得点」という名前のシートがあります。
(「田中」のセルがA1です。)

 [ 田中 ][ 10 ][ 200 ]
 [ 山田 ][ 21 ][ 150 ]
 [ 佐藤 ][ 76 ][ 250 ]
 [ 鈴木 ][ 53 ][ 350 ]

別のシートのA1セルに、「佐藤」と入力すると、

 [ 佐藤 ]

「得点」シートから「佐藤」の列を見つけて、B1、C1に

 [ 佐藤 ][ 76 ][ 250 ]

のように表示させたいのですが、B1、C1にはどのような式を書けば良いのでしょうか。
「得点」シートでは氏名が重複する事はありません。
IF文を使うと思うのですが、いまいち良く分かりませんでした。

よろしくおねがい致します。

Aベストアンサー

こんにちは!
VLOOKUP関数で対応できます。
IF関数と併用すればエラー処理が可能です。

Excel2007以降のバージョンであれば
B1セルに
=IFERROR(VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0),"")
としてC1セルまでオートフィルでコピー!
そのまま下へコピーすると行が2行目以降でも対応できます。

Excel2003までの場合は
=IF($A1="","",VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0))

としてみてください、m(_ _)m

QCSVファイルの中で、「 , 」カンマを使いたい

「 , 」で区切られたCSVファイルの中で、「 , 」カンマを使いたいのですが、可能でしょうか?

具体的には「これは1,500円でした。」というように、CSVファイルに収められた文章内で出てくる半角の数字(お金)の区切りに使いたいのです。
全角では代用したくないのですが、CSVファイルでデータを受け渡しする際に、困っています。

例えば、特殊文字などで対応可能でしょうか?

Aベストアンサー

受け渡しに使うと言うことは相手方のアプリケーションのことも考えなければいけないのですが・・・とりあえず対応が簡単そうな方法を。

1.各セルを""で囲む。(もちろんデータにダブルクォートがある場合はカンマと同様に困ります。
2.カンマで区切らずにタブで区切る。(比較的使われない文字ですが、やはりデータ中にタブがあるとカンマと同様です)

難しいけれど完璧に対応するためには、データ中の区切り文字は特殊な文字列に変更し、受け取り側のアプリケーションではその特殊な文字列をデータ中の区切り文字として扱うという方法が使われます。
例えば、データ中のカンマは\,にするとか。

データ作成側、受け取り側でそれぞれどこまで対応できるのか分かるともっと簡単かつ具体的な方法を回答できるかも知れません。

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Q文字列として"(ダブルコーテーション)を表示させる方法

こんにちは。文字列として、ダブルコーテーションを表示させるには、どうすればよいのか教えてください。m(__)m


例えば、
<font size="2">あいうえお</font>

というタグの「あいうえお」の部分が、セルA1にあった場合、

="<font size="2">"&A1&"</font>"という表示にしたいのです。

"2"のダブルコーテーションも文字列として表示させるには、どうすればよろしいのでしょうか。

教えてください。よろしくお願い致します。

Aベストアンサー

こんにちは~

表示形式は 「標準」 のままで、
ダブルコーテーションを、ダブルコーテーションで囲んでください。

""2""

="<font size=""2"">"&A1&"</font>"

としてみてください。

Qエクセルで文字を含む式に、カンマ(,)をつけるには??

おはようございます。お世話になります。

エクセルで、以下のような式を入力しました。

=A12&"("&TEXT(G12*2.45,0)&"円)

全体額(120002円)

一部額(25830円)
などと出るのですが、この数字にカンマ(,)をつけるにはどうしたら良いのでしょうか?

宜しくお願いします。

Aベストアンサー

こんにちは。

マイナス値や小数点以下を考慮しないなら

=A12&TEXT(G12*2.45,"(#,##0円)")


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

人気Q&Aランキング