MS Excelでセルの表示値を取得するにはどうすればよいですか(日付に変換されたテキストの場合)?
元はCSVファイルであったExcelファイルがあります。現時点では、元のCSVファイルにアクセスできません。 CSVファイルが最初にExcelで開かれたとき、Date
列のセルの多くは自動的に変換されました。
Date
列の一部の項目の例を次に示します(間隔は左揃えと右揃えのセルを表し、主に2番目の日付が変換されなかったことを示しています)。
展示1:
_ 3/1/71
12/01/1882
Fall 1988
1993
_
そして、これらのセルの1つを選択し、右クリックしてフォーマットを選択すると、さまざまな結果が得られます。
_m/d/yy
General
General
General
_
したがって、Excelが12/02/1882の日付を変換していないように見えます。おそらく、「古すぎる」ためか、別の理由のためです。
列全体を選択して「一般」フォーマットに変更すると、次のようになります(テキストは左揃え、数値は右揃え)。
_ 25993
12/01/1882
Fall 1988
1993
_
形式を「一般」または「テキスト」に設定した列が1つあり、そこに別紙1上記。
私は この質問 を使用してDataFormatterクラス(Javaのように見えますか?)と、マクロとVBスクリプトを使用する同様の質問をしました。これを行うには、Excel関数を使用する方法と同じです。
私はうまくいかなかったこれらのものを使ってみました:
CONCATENATE
-日付フィールドを取得し、それにスペースを追加しますINDIRECT(ADDRESS(ROW(),5))
-間接的に値を取得しますVALUE()
-セルの「値」を取得します-私が望むものの反対TEXT()
-形式を明示的に指定できますが、それを機能させることはできませんCELL()
-「コンテンツ」などのセル情報を取得するために使用できます-これではうまくいきませんが、format
を取得するためにも使用できることがわかりました。セルが数値として表示されているのか、それともIF
関数と一緒に使用して、日付として表示されている数値を実際の日付に戻すことができるのかを教えてください。
コピー貼り付け方法
機能していると思われる方法の1つは、値を選択してコピーし、メモ帳に貼り付けてから、コピーしてExcelに貼り付け直すことです(表示された値が効率的に表示されます-これは私が望んでいることです)。
唯一の問題は、Excelシートに数十万行が含まれているため、これを実行する関数が必要であることです。
可能なすべての形式を提示していただければ、これでうまくいくはずです。
=TEXT(A1, IF(CELL("format",A1)="D4", "m/d/yy", "General"))
M/d/yy以外の日付形式がある場合は、それらのテストを追加します。
一般的な答え:
CELL( "format" ...)関数の結果を混乱させるのではなく、ユーザー定義関数を使用してセルのNumberFormatプロパティを直接返す方が簡単な場合があります。
その場合、式「= TEXT(A1、NumberFormat(A1))」は、表示された値を直接提供します。
これを有効にするには、ワークシートのモジュールに次のものが必要です。
Public Function NumberFormat(CellRange As Range) As String
NumberFormat = CellRange.NumberFormat
End Function
同じ答えですが、機能が異なります(これは私にとってはうまくいきました)。
Public Function DisplayText(ByVal pRange As Range) As String
DisplayText = pRange.Text
End Function
= DisplayText(A1)を使用するだけです。セルのフォーマットを変更すると、この関数は表示されたテキストを返します
これでうまくいきます。上記の投稿と同じですが、エラーチェックが含まれています。
手順1:次のパブリック関数をコピーしてVBAモジュールに貼り付けます。
Public Function CELLTEXT(target As Range) As String
If target.Cells.Count > 1 Then
MsgBox "CELLTEXT function requires a single cell as an input, please try again"
Exit Function
Else
CELLTEXT = target.Text
End If
End Function
ステップ2:スプレッドシートで試してください。任意のセルに数式を入力します。例:= CELLTEXT(A1)。これにより、A1が表示していたものが出力されます。