Jelmerは多くの財務データを処理し、ワークシートの情報は多くの国の通貨である可能性があります。それらを区別する唯一の方法は、セルのフォーマットに使用される通貨記号を使用することです。たとえば、セルは通貨記号「EUR」または「SEK」を使用するようにフォーマットできます。 Jelmerは、数式で、特定のセルのフォーマットに使用される通貨記号を決定する方法があるかどうか疑問に思います。

Excelには、探しているものを返す組み込みのワークシート関数がないため、数式で実行することはできません。ただし、必要な情報を返す独自のユーザー定義関数を作成することはできます。次に例を示します:

Function GetCurrency(rCell As Range) As String     Dim sTemp As String     Dim sKeep As String     Dim sThrowAway As String     Dim J As Integer

Application.Volatile     sKeep = "Not a Numeric Value"

If IsNumeric(rCell) Then         sThrowAway = "0123456789.,()+- ]"

sTemp = rCell.Text         sKeep = ""



For J = 1 To Len(sTemp)

If InStr(sThrowAway, Mid(sTemp, J, 1)) = 0 Then                 sKeep = sKeep & Mid(sTemp, J, 1)

End If         Next J     End If     GetCurrency = sKeep End Function

この関数を使用するには、セルB7にあるものすべてに通貨記号が必要であると想定して、次を使用します。

=GetCurrency(B7)

これが機能するのは、セルの.Textプロパティが、セル内にあるもののフォーマットされたバージョンを返すためです。セルに数値が含まれていると仮定すると(関数はそれをテストします)、フォーマットされたテキストがsTemp変数に割り当てられます。次に、そのテキストの各文字がsThrowAway文字列の文字と比較されます。一致する場合、その文字は無視されます。一致しない場合は、sKeep変数に追加されます。

これは、関数によって返されるものです。

また、評価対象のセルに数値が含まれていない場合は、エラーメッセージ(「数値ではありません」)が返されることに注意してください。

この関数で注意すべき点が1つあります。ターゲットセルのフォーマットを変更しても、マクロはトリガーされません。これはExcel自体の欠点のようです。形式を変更してもワークシートの再計算はトリガーされないため、マクロ自体はトリガーされません。

ただし、次に再計算が必要なワークシートに変更を加えたときにトリガーされます。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

link:/ excelribbon-ExcelTipsMacros [ここをクリックして、新しいブラウザタブでその特別なページを開きます]

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(13787)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice365のExcelに適用されます。