Justinには、660501C016971など、ワークシートで日常的に使用する部品番号があります。彼は、セルにカスタム形式を適用し、6605-01-C01-6971などの適切な場所に部品番号をダッシュ​​で自動的に表示させたいと考えています。

残念ながら、これはカスタム形式では実行できません。どうして?カスタムフォーマットは数字の表示用であり、テキスト用ではないためです。 「アット」記号(@)で示されるテキスト形式が1つありますが、それだけです。他にはありませんし、他を定義することもできません。

カスタム形式は使用できないため、回避策を見つける必要があります。これを行う1つの方法は、部品番号を調べて、番号のテキスト部分を削除しても部品番号が引き続き使用できるかどうかを確認することです。たとえば、ジャスティンの番号は660501C016971です。部品番号の形式で常に部品番号の同じポイントに文字Cが必要な場合(および他の可能な文字がない場合)、Cを削除して、番号660501016971を残すことができます。これは番号であるため、適切な場所にダッシュを、適切な場所に文字Cを含むカスタム形式を開発できます。カスタム形式は次のようになります:

0000-00-C00-0000

番号660501016971を含むセルにフォーマットを適用すると、正しくフォーマットされた部品番号が表示されます。

6605-01-C01-6971。ただし、このアプローチには欠点があります。最大の欠点は、部品番号を別のプログラムに、おそらくCSVファイルとしてエクスポートしたい場合、最終的にエクスポートされるのは、フォーマットまたは文字Cのない元の番号であるということです。

もう1つの回避策は、数式を使用して、必要な形式で部品番号を表示することです。ダッシュなしでセルに入力してから、数式を使用して適切な場所にダッシュを追加できます。

レポートを作成するときは、ダッシュなしで部品番号を含む列を非表示にするだけです。ダッシュのない部品番号がセルA1にある場合に機能する数式は、次のとおりです。

=LEFT(A1,4) & "-" & MID(A1,5,2) & "-" & MID(A1,7,3) & "-" & RIGHT(A1,4)

部品番号をかなり使用する場合は、ダッシュを簡単に追加および削除する方法が必要になる場合があります。これを行う最良の方法は、マクロを使用することです。選択したセル範囲の部品番号にダッシュを追加したり削除したりできるマクロを開発できます。以下はそのようなマクロの例です。

Sub DashesIn()

DoDashes ("In")

End Sub
Sub DashesOut()

DoDashes ("Out")

End Sub
Private Sub DoDashes(What As String)

Dim c As Range     Dim J As Integer

For Each c In Selection.Cells         If c.Value <> "" Then             J = InStr(c.Value, "-")

Select Case What                 Case "Out"

While J > 0                         c.Value = Left(c.Value, J - 1) & _                           Mid(c.Value, J + 1, Len(c.Value))

J = InStr(c.Value, "-")

Wend                 Case "In"

If J = 0 Then                         c.Value = _                           Left(c.Value, 4) & "-" & _                           Mid(c.Value, 5, 2) & "-" & _                           Mid(c.Value, 7, 3) & "-" & _                           Right(c.Value, 4)

End If             End Select         End If     Next c End Sub

このリストには実際には3つのマクロがあることに注意してください。最初の(DashesIn)は部品番号にダッシュを追加し、2番目の(DashesOut)は

それらを削除します。部品番号を含むセルを選択し、実行する操作を実行するマクロを実行するだけです。

DashesInとDashesOutはどちらも、実際に作業を行うために共通ルーチンDoDashesを呼び出します。マクロは、選択範囲内のすべてのセルを調べてから、それらのセルの内容に対して実行する必要のある操作を実行します。

注:

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

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

このヒント(3231)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。