web-dev-qa-db-ja.com

先頭にダッシュが付いたテキスト文字列を負の数に変換します

私が使用するオンラインブローカーは、世界で最も機能不全のウェブサイトを持っている必要があります!これらは「エクスポート」機能を提供せず、代わりに、ブラウザでレンダリングされたテーブルからデータをコピーしてExcelに貼り付けることができることをユーザーに通知します。 (本当に!)

驚いたことに、Excel(2016、Mac用)は、「正のテキスト番号」を数値関数(通常はSUM)で操作できる実際の数値に変換するように仕向けることができます。しかし、「負のテキスト番号」は、負の数に変換されることがわかったすべての努力に逆らいました。

「正のテキスト番号」は次のとおりです:$ 123.45
「負のテキスト番号」は次のとおりです。-$ 543.21(先頭のテキスト文字hyphenに注意してください)

編集:
「負のテキスト番号」は次のとおりです。– $ 299.55(先頭の文字が[〜#〜]ではない[〜#〜]a hyphen;それは _em dash_ の可能性があります
混乱をお詫びします...数字でいっぱいのウェブページで、どのようなプログラマーが_em dash_の代わりに_minus sign/hyphen_を使用するのか疑問に思っていますが、それは質問です私の場合 オンラインブローカー

セルA1の「正のテキスト番号」を次のように変換できます。=VALUE(RIGHT(A1,6))

ただし、これは「負のテキスト番号」では機能しません。数字は正しいですが、負の符号は失われます。 chars値を変更しようとしましたが、それは役に立ちません。

私も成功せずに以下を試しました:
1。 1を掛ける
2。テキストから列へ
3。フォーマットセル..

手動で再入力する以外に、これを行う方法はありますか?

2
Seamus

セルA1に「$ 123.45」または「-$ 543.21」の形式のtextが含まれている場合、次の数式を使用して数値を取得できます。

=IF(LEFT(A1,1)="-",0-VALUE(RIGHT(A1,LEN(A1)-1)),VALUE(A1))

テキストが「-」で始まる場合、これは「-」の後のすべての値を取得し、それを負にします。

2
Blackwood

私は簡単な解決策を見つけたと思います。先頭に全角ダッシュがあるセルの1つで、全角ダッシュだけを強調表示してコピーします。 Excelの「検索と置換」機能を使用して、「何を検索」ブロックに全角ダッシュを貼り付け、「置換」ブロックにマイナス記号を入力します。変換するすべてのセルに置換を適用します。

3
Geoff

私はお勧めします:

  1. _$_記号の後に値を抽出し、固定位置を使用しないでください
  2. _$_記号の直前の記号をチェックして、値記号を確認します。

したがって、式は次のようになります。

_=IF(IF(ISERROR(FIND(MID(A1,FIND("$",A1)-1,1),"<dash><hyphen>")),3,FIND(MID(A1,FIND("$",A1)-1,1),"<dash><hyphen>"))<3,-MID(A1,FIND("$",A1)+1,LEN(A1)),0+MID(A1,FIND("$",A1)+1,LEN(A1)))
_

どこ

_"<dash><hyphen>"_-負の符号が可能なリテラル(プレースホルダーを任意の順序で適切な文字に置き換えるため、示されている場合は2記号リテラルを取得します)

_3_-前のリテラルの文字数よりも大きい数

これらの値は、すべての可能な「マイナス」記号(それぞれ_Z1_および1+LENGTH(Z1)など)を含むセルへの参照に置き換えることができます。


更新。式をデバッグします。

空のワークシートにテーブルを作成します。

4つの異なる値をA列に挿入します(先頭のスペースなし/あり、正/負)。

以下の数式を挿入します。

_Cell          Formula                      Meaning
-------------------------------------------------------------
$B$1          =IF(I1,-G1,0+G1)             Result
$C$1          =LEN(A1)                     Data length in source
$D$1          =FIND("$",A1)                $ position in source
$E$1          =MID(A1,D1-1,1)              symbol before $
$F$1          =FIND(E1,"<dash><hyphen>")   symbol before $ position in hyphens list
$G$1          =MID(A1,D1+1,C1)             number from source
$H$1          =ISERROR(F1)                 correction when no symbol before $ in list
$I$1          =IF(H1,3,F1)<3               define is a source positive or negative
_

この数式パックを2〜4行目にコピーします。次のような出力が得られることを確認してください。

_     A        B      C   D   E      F       G    H       I
1    $123     123    4   1   #VAL!  #VAL!   123  TRUE    FALSE   
2    -$234    -234   5   2   -      1       234  FALSE   TRUE    
3      $345   345    6   3          #VAL!   345  TRUE    FALSE   
4      -$456  -456   7   4   -      1       456  FALSE   TRUE    
_

列C〜Iには単一の計算ステップが含まれ、列Bにはすべての置換を含む最終式が含まれます。

計算の失敗はどこにありますか?

0
Akina