数式を使用して複数のセルの内容を1つのセルにマージする場合、KrisはExcelで元のセルの書式を保持するのに問題があります。たとえば、セルA1とB1にそれぞれ1と0.33が含まれているとします。セルC1に、次の数式を入力します。

=A1 & " : " & B1

セルC1の結果は次のようになります:

1:0.3333333333

結果のC1がB1(0.33)に示されているものと一致しない理由は、B1の値が実際には0.33ではないためです。内部的には、Excelは15桁の値を維持するため、セルB1に= 1/3などの数式が含まれている場合、内部的には0.33333333333333として維持されます。ただし、セルB1に表示される内容は、セルのフォーマット方法によって異なります。この場合、フォーマットはおそらく小数点を超えて2桁のみを表示するように設定されています。

ただし、セルC1で目的の結果を得るにはいくつかの方法があります。 1つの方法は、セルA1とB1から取得した値がフォーマットされるように、数式を少し変更することです。たとえば、次の例では、TEXT関数を使用してフォーマットを実行します。

=TEXT(A1,"0") & " : " & TEXT(B1,"0.00")

この場合、A1は整数のみを表示するようにフォーマットされ、B1は小数点以下2桁のみを表示するようにフォーマットされます。 ROUND関数を使用して、同様の結果を得ることができます。

=ROUND(A1,0) & " : " & ROUND(B1,2)

別の可能な解決策は、Excelがブックの精度を処理する方法を変更することです。次の手順に従ってください:

。 [Excelのオプション]ダイアログボックスを表示します。 (Excel 2007では、[Office]ボタンをクリックし、[Excelオプション]をクリックします。Excel2010以降のバージョンでは、リボンの[ファイル]タブを表示し、[オプション]をクリックします。)

。ダイアログボックスの左側にある[詳細]オプションをクリックします。

。 [このワークブックを計算するとき]セクションが表示されるまで、使用可能なオプションをスクロールします。 (図1を参照)

。 [表示された精度を設定]チェックボックスがオンになっていることを確認します。

。 [OK]をクリックします。

現在、Excelは、通常維持している15桁の完全な精度で計算を行う代わりに、すべての計算と連結で画面に表示される精度を使用します。このアプローチは一部のユーザーには受け入れられるかもしれませんが、他のユーザーにとっては、解決するよりも多くの問題が発生します。期待どおりに出力をフォーマットするには、より低い精度で動作できるかどうかを判断する必要があります。

さらに別のアプローチは、ターゲットセルに格納されているものではなく、ターゲットセルに表示されているものを返す独自のユーザー定義関数を作成することです。次のマクロは、この点でうまく機能します:

Function FmtText(rng As Range)

Application.Volatile     FmtText = rng.Cells(1).Text End Function

このマクロを使用するには、ワークシートで次のような式を使用します。

=FmtText(A1) & " : " & FmtText(B1)

注:

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

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

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