• ベストアンサー

通貨と文字の連結について

CSVから値を取得して領収書のようなものをつくっています。下のような感じで配列から値を取得して そのセルの書式設定を通貨にして¥25,000のように表示しておりました。 これに「-」をつけて表示したいのですが、単純に「-」を以下のように連結すると25000-と表示されてしまいます。 これを「\25,000-」を表示するにはどうすればよろしいのでしょうか? Cells(2, 3) = strAryBuf(1) \25,000 Cells(2, 3) = strAryBuf(1) & "-" 25000-

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

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

こんにちは。 もしExcelでしたら、どのみち、いくら、String型でセルに与えても、個々にセルに代入したら、キャスト変換されてしまうはずです。「-」をつければ、逆に数値でも、文字化しています。 その都度、フォーマットを換えるか、予め設定しておくかどちらかだと思います。  With Cells(2, 3)   '.NumberFormat = "General" '初期化   .NumberFormatLocal = "\#,##0-"   .Value = strAryBuf(1)  End With

その他の回答 (3)

noname#22222
noname#22222
回答No.3

書式=\#,##0"-" Or 書式=\#,##0;\#,##0- という単純な書式に関する質問でしょうか? それとも、 Cells(1, 3) = FormatCurrency(2500) & "-" FormatCurrency()を使いたいのでしょうか? ※Excel は、数年前に一度利用しただけですので...

  • tom11
  • ベストアンサー率53% (134/251)
回答No.2

関数を使うと、 以下でも、できるみたいです。 ?FormatCurrency(25000)&"-" \25,000-

回答No.1

Cells(2, 3) = "\" & strAryBuf(1) & "-" \25000- ではダメでしょうか

関連するQ&A

  • Excelの文字列と文字列の連結

    A1のセルにはj50 C1のセルには01(ユーザ定義で00の書式) この二つの数値をCONCATENATE()関数を用いて文字列を 連結するとj501となってしまいます。 C1のセルを文字列の書式にするとうまくj5001と表示されますがそれ以外に方法はないでしょうか?

  • VBAでのセルの参照

    VBAであるセルの値をCSV出力にしようしたいと思っています。 対象セルが、ただ値のみが入っているセルならば問題ないのですが、式が入っているセルですと上手くできません。 詳細は以下のとおり セルA1:8.25  セルA2:8.80   セルA3:=A1-A2 (画面には-0.55と表示)で 変数=Cells(3,1).Valueと言った形で、A3の値を変数に受け取ろうとしています。 すると変数には入るべき値の近似値(-0.54999999・・) が入ります。 すべてのセルの書式は数値で、少数第2位までに設定されており、決して上記以外の値が入っていることはありません。 何故、このような現象が起こり、またどうすれば解決できるのでしょう? ちなみに変数=Cells(3,1).Textにすると正しい値(-0.55)が入ります。 .Valueと.Textの違いも教えていただけるとあり難いです。 宜しくお願いします。

  • エクセル2007 セルに通貨入力について

    何時もサイトで勉強させてもらってます。 タイトル通りエクセル2007のセルにセルの書式設定で分類>通貨にして 小数点以下の桁数>2とし、15000と入力すると150.00と表示されます。 金額計算表を作成したいのですが、15.000にする方法を教えてください。

  • アクセスの通貨書式について

    こんにちは。 あるアクセス問題集でクエリを作成する際に、税込金額:金額*1.05というフィールドを追加しなさいとあったのでそう設定し、次にデータシートビューで確認すると 通貨書式を設定していないので「10290」や「4147.5」というような数値で出てきます。 それを通貨書式を設定すると小数点以下は切捨てになるのでしょうか?それとも繰り上げでひょうじされるのでしょうか? 通貨書式とはそのいづれかで設定されるようになっているのでしょうか? 少し、わかりづらい文章だと思いますがご返答いただける方よろしくお願いします。

  • 通貨で数字の後ろに「-」を入れたい

    セルの書式を通貨にする事によって「¥」と区切りカンマは自動で入るのですが、場合によっては数字の後ろに「-」を入れる場合がありますよね!? その場合はどのようにすれば良いのでしょうか? 見積りの合計金額のセルに表示させたいので自動で入るように出来れば助かります。 難しい関数を使わずに出来たら良いな~! お願いしま~す!!

  • セルの書式が標準なのに文字列にできるのはなぜ?

    会社のシステムで吐き出したデータですが セルの書式設定が標準なのに文字列となっています。 マクロを利用して、あるセルの値を別セルへ転記すると、 数字は数値に変換され、先頭の0は消え、桁数が多いと指数表示になってしまいます。 会社のシステムが吐き出したエクセルはセルの書式が標準なのに 中の数字が文字列でいられるのが疑問です。 会社のシステムの吐き出したデータは Microsoft Excel 2.1ワークシートで 全てのセルの書式設定は「標準」です。 で例えば 12345678901234 は 12345678901234 と表示されていて 「数値が文字列として保存されています」 となっています。(先頭に ' は入っていません) 0101という値のセルでも 表示は0101ですが 「数値が文字列として保存されています」 となっています。(先頭に ' は入っていません) それらのセルの値をマクロとかで別セルに転記すると 転記先では1.23457E+13 と表示されてしまいます。 (0101は101になります。) まっさらなエクセルに自分で手入力すると ・セルの書式設定が標準だと 12345678901234 ↓ 1.23457E+13になります。 ・セルの書式設定が数値だと 12345678901234 ↓ 12345678901234 ・セルの書式設定が文字列だと 12345678901234 ↓ 12345678901234 (ただし 数値が文字列と保存されています と注釈有) なのに会社のシステムの吐き出しデータは セルの書式設定が標準なのにもかかわらず 12345678901234 ↓ 12345678901234 (ただし 数値が文字列と保存されています と注釈有) となっています。 手入力で書式設定が標準の状態でセルに12345678901234 と表示させるには先頭に ' をつける方法しか知りませんが ' が無いのに表示されています。 でもこの該当セルをマクロで別セル(書式設定:標準)に転記すると 1.23457E+13 となります。 またシステムが吐き出したエクセルの同じシート内に 以下のマクロで転記すると ↓ Sub 転記() 行 = 2 Do If Cells(行, 6).Value = "" Then Exit Do If Cells(行, 6).Value >= 10 Then Cells(行, 7).Value = Range("A2") Else Cells(行, 7).Value = Range("A3") End If 行 = 行 + 1 Loop End Sub ↓ このマクロだと A列~F列が書式設定が標準なのに文字列として表示されているのですが 転記先のG列が書式設定が標準であっても 12345678901234 (数値が文字列と保存されています と注釈有) と同じ状態のまま転記できます。 新しいBOOKのシート2に 会社の吐き出しデータをシートコピーした後、 (セルの書式設定:標準だが文字列で表示されている) そのBOOKに登録されているマクロで シート2のセルからシート1のセル(書式設定:標準)に転記すると 数字は数値に変換され、先頭の0は消え、桁数が多いと指数表示 となってしまいます。 ちょっと混乱しています。 理屈等教えていただければと思います。お願いします。

  • エクセルでセルに通貨表示に変更したい

    エクセルでセルの書式設定で標準を選んでOKとしてセルに1250、250、入力すると12.5、2.5なってしまう。セルの書式設定で通貨を選んでOKとしてセルに1250、250、入力すると¥13、¥3となる変更する方法を教えてください。

  • ワークシート関数で書式どおりの表示をしたい。

    C2セルに、通貨(記号 £)の書式設定がされています。 9000と入力すれば、もちろん £9,000 と表示されます。 このセルを参照しているセルには書式を設定してありません。 =TEXT(C2,"£#,##") と数式をいれれば、もちろん £9,000 と表示されますが、これではポンドの決めうちになってしまい、C2セルの書式の通貨記号を他のものに変えても反映しません。 VBAなら、 Function GetTxt(ByRef C As Range)   GetTxt = C.text End Function と、ユーザー定義関数をつくれば、 =GetTxt(C2) で間単に表示された通りの値を取得できるのですが、ワークシート関数で参照先のセルに表示させる方法はないでしょうか?

  • 【Excel VBA】セル内に改行を挿入したい

    セル内で左から数えて10文字毎に改行(折り返し)させたいのですが、 どのようにコーディングすればよろしいでしょうか? 例) セルA1の値が "あいうえおかきくけこさしすせそたちつてとなにぬねの" の場合、 "あいうえおかきくけこ さしすせそたちつてと なにぬねの" としたいです。 ※セルの値は、CSVから自動取得して貼り付ける仕様になっています。  またセルの書式設定は、"折り返して全体を表示する"に事前に設定します よろしくお願いします。

  • NumberFormatLocalの値を比較したい

    Excel VBA:円記号の入った「NumberFormatLocal」の値を比較したい 以下の例で文字「バックスラッシュ」はVBAでは「円記号」で表示されています。 セルに設定された書式Selection.NumberFormatLocalの値が文字列「"\#,##0;\-#,##0"」に等しいか調べたいがうまく比較できない。 環境、OS:Windows10, Windows8、Excel:2010,2013 例 セル”A1”に数値「123456」を入力 “A1”に手作業で通貨書式を設定 「セルの書式設定」->「表示形式」->「通貨」->「\-1,234」(黒色:デフォルト) マクロの記録は Sub Macro1() Range("A1").Select Selection.NumberFormatLocal = "\#,##0;\-#,##0" End Sub “A1”に設定された書式が通貨書式であるかをVBAで確認するために プロシジャー test1 を作り、実行すれば”No”になる。 “Yes”を予想してしまうが、”No”になる理由と解決方法が知りたい。 Sub test1() Dim strTuka As String strTuka = "\#,##0;\-#,##0" Range("A1").Select MsgBox Selection.NumberFormatLocal If Selection.NumberFormatLocal = strTuka Then MsgBox "Yes" Else MsgBox "No" End If End Sub どなたか、アドバイスをお願いします。