Ciaranは図書館で働いており、ExcelでISBN番号の長いリストを扱う必要があることがよくあります。数字には10桁または13桁を含める必要があり、ダッシュを含めることができ、先行ゼロを含めることができます。彼は、ISBNを含むセルをテキスト文字列としてそのまま維持するために、テキスト形式を使用しています。目的によっては、ISBNのダッシュを削除する必要があり(彼はこれに検索と置換を使用します)、そこから問題が発生します。

0-241-95011-2は241950112になり(現在は9桁になります)、さらに悪いことに、978-0-00-200784-9は9.78E + 12(科学的記数法)になります。 Ciaranは、ダッシュを取り除くために検索と置換を使用する前または後にフォーマットをどのように行っても、これら2つの問題を回避する方法を見つけることができません。

セルを編集すると、Excelはセルの内容をテキストではなく数値として解析します。この場合、最善の解決策は、ダッシュを削除するために検索と置換を実行する前に、セルの内容の前にアポストロフィが付いていることを確認することです。

列Aに多数のISBN番号を含むワークシートがある場合は、次のような式を使用してアポストロフィを追加できます。

= "'" & A1

次に、数式の結果をコピーしてから、[形式を選択して貼り付け]を使用して値を列Aに貼り付けます。列Aの各値には、アポストロフィが含まれます。後で検索と置換を実行するとき、先行ゼロは引き続き存在し、科学的記数法の試行は行われません。

これが機能する理由は、アポストロフィがセルの内容をテキストとして扱う必要があることをExcelに示すためです。アポストロフィはワークシートには表示されませんが、数式バーを見るとわかるように、セルの内容の一部です。

別のアプローチは、ダッシュを取り除くために検索と置換の使用をバイパスすることです。代わりに、次のようにSUBSTITUTE関数を使用してそれらを削除します。

=SUBSTITUTE(A1,"-","")

SUBSTITUTEワークシート関数はテキスト値を返すため、先行ゼロは維持され、Excelは数値を数値形式を使用するように変換しようとしません。

ISBNを含むセルの範囲からダッシュを定期的に削除する必要がある場合は、マクロを使用して操作を実行する方がよい場合があります。次のマクロは、実行する前に選択したセルに対して機能します。

Sub RemoveDashes()

Dim c As Range     Dim sISBN As String

Application.ScreenUpdating = False     For Each c In Selection         sISBN = Replace(c, "-", "")

c.NumberFormat = "@"

c.Value = "'" & sISBN     Next     Application.ScreenUpdating = True End Sub

基本的に、マクロは3つのことを行います。ダッシュを削除し、セルをテキストとしてフォーマットし、削除されたISBNをセルの前にアポストロフィを付けて戻します。

注:

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

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

このヒント(9928)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice 365のExcelに適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。