Krisは航空宇宙工場で働いており、さまざまな企業のガスタービンエンジン部品を製造しています。各企業には独自の部品番号があります。一部はすべて数値ですが、ほとんどはさまざまな長さの数字と文字の組み合わせです。部品番号で並べ替える場合、Krisは列をテキストとして扱い、必要に応じて並べ替えが行われるようにしたいと考えています。彼はセルをテキストとしてフォーマットしようとしましたが、それが常に役立つとは限りません。また、彼は各セルにアポストロフィを入力するというアイデアを愛していません。 Krisは、Excelですべての部品番号をテキストとして並べ替える簡単な方法があるかどうか疑問に思います。

おそらく、クリスの問題の最も明白な部分は、セルをテキストとしてフォーマットしようとしたというステートメントですが、それが常に機能するとは限りません。セルをテキストとしてフォーマットするコツがあります。セルに情報を入力する前に行う必要があります。数値を含むセルをテキストとしてフォーマットしようとしても、数値はテキストに変更されません。ただし、数値を入力する前にセルがテキストとしてフォーマットされている場合、数値は入力時にテキストとして扱われます。

解決策は、セルをテキストとしてフォーマットした後、すべての数値を再入力することです。もちろん、これは、数百または数千の部品番号を扱う場合の大きな雑用になる可能性があります。代わりに、部品番号が列Aにあると想定する次の一般的な手順を試すことができます。

。部品番号のすぐ右側に列を挿入します。 (この新しい列は列Bになりました。)

。列Bをテキストとしてフォーマットします。

。列Aを選択し、Ctrl + Cを押します。これにより、部品番号がクリップボードにコピーされます。

。セルB1を選択します。

。 [形式を選択して貼り付け]を使用して、値のみを新しい列に貼り付けます。

これらの手順を完了すると、列Bのすべてがテキストとして扱われ、列Aを削除できるようになります。これで、部品番号で並べ替えて、目的の結果を得ることができます。

もちろん、これには問題があります。今後、部品番号のコピー&ペーストを頻繁に行うと、すべての部品番号がテキストとして扱われなくなる可能性があります。これは、従来のCtrl + CおよびCtrl + Vを使用してコピーして貼り付ける場合、Excelが書式設定もセルに貼り付けるために発生します。したがって、貼り付けられる部品番号が以前に番号としてフォーマットされていた場合、貼り付けられた後は番号として扱われます。

この場合、必要に応じて、マクロを使用して、部品番号が常にテキストとしてフォーマットされていることを確認できます。以下は、うまく機能する短いものです:

Sub MakeText()

Dim c As Range

Selection.NumberFormat = "@"

For Each c In Selection         c.Value = c.Value     Next c End Sub

マクロの背後にある考え方は、すべての部品番号を選択して実行するというものです。選択範囲の書式設定はテキストに設定され、選択範囲内の各セルが「再入力」されるため、数値はその後テキストとして扱われます。

ヘルパー列の使用に不利ではなく、マクロを使用したくない場合は、パーツ番号に相当するテキストを含むマクロを作成してみてください。これは、次の式のいずれかを使用して実行できます。

=A1 & ""

=CONCATENATE(A1)

=TEXT(A1, "@")

数式を必要な数のセルにコピーします。これらの数式は、ヘルパー列の内容をテキストとして処理するように強制します。次に、ヘルパー列の内容に基づいて部品番号を並べ替えることができます。

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

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