web-dev-qa-db-ja.com

Excelを修正して、セルがテキストとしてフォーマットされている場合でも、コピー貼り付けまたはインポートされた文字列を日付に変換しないようにする方法

毎回数値データを分数またはハイヘンで区切ってExcelにコピーアンドペーストします。常に可能性のある数値を変換します日付を日付にする。 それらを元のフォーマットに戻す方法はありません(コピーしたとおり)。テキストに戻って数値に戻ったとしても、日付番号を取得します!

CSVに保存してインポートしても修正されません!

私はこれに対する解決策を数年探していましたが、今でも相変わらずイライラしています。

5-6または5/2のようなものはすべて日付または日付値に変換され、文字列の元のコンテンツを復元したり、日付ではなくテキストとして処理するようにExcelに指示したりすることはできません。

コピー&ペーストだけではありません。統合またはCSV経由でアプリケーションから直接データを送信することもできません。インポートを無効にし、コンテンツを日付の値に変更します。

「あなたはゼロレップモーロン、これは解決されました!」

あなたが言う前に、これは以前に尋ねられました。同じことを尋ねる上位の質問と、投稿された「解決策」を見てみましょう。

1. Excelでコピー貼り付けされた数値/テキスト値を日付に変換しないようにします

データ-外部データのインポート-新しいWebクエリを実行してウィザードに従います

機能しません。とにかく、さまざまなソースからコピーして貼り付けることができず、信じられないほど遅いので、解決策にはなりません。

データをそのままスプレッドシートに貼り付けます。すべてを選択し、テキストとして書式設定します。最初に行った作業の上にもう一度貼り付けますが、今回は値として貼り付けます。

21票!本当に?!私の例のように、はデータを使用しても機能しません。また、年齢もかかります。

  1. 元のデータをコピーする
  2. メモ帳に貼り付け(Notepad ++を優先)
  3. セルのプロパティをTEXTに変更します
  4. メモ帳からすべてコピー
  5. Excelに貼り付けます。

13票。非常に遅く、だらしない回避策。 とにかく機能しません

2. Excelでのコピー/ペースト時に数値が日付形式に変換されないようにする方法

空のフィールド(または列全体)を選択し、デフォルト値の代わりに文字列形式に設定し、「値のみ」を使用して特別な貼り付け(右クリックで利用可能)を実行して、日付形式が自動適用されないようにします。 ...

[形式を選択して貼り付け]と[値を貼り付け]を常に使用しています。からコピーして貼り付ける場合、値のオプションはありません。 HTMLテーブル。 機能しません

貼り付ける前に、日付以外の値を保持する列を選択してください。右クリック。 「セルのフォーマット」を選択します。次に、フォーマットとして「テキスト」を選択し、「OK」をクリックします。

次に、貼り付けますが、「宛先のフォーマットに一致させる」オプションを使用して貼り付けます。

機能しません。 「宛先フォーマットの一致」オプションはありません。

これを解決する方法はいくつかありますが、最も一般的で簡単な方法は、データをテキストとして貼り付ける前にセルをフォーマットすることです(範囲を選択、右クリック、セルのフォーマット、テキストをダブルクリック)。

これもまた! 機能しません

私がやったことは、小数点記号を単に変更することでした:

オプションではありません。 「-」と「/」は小数点区切り文字ではありません。 機能しません

ソースデータの番号にこの歌( ')を追加して、Excelに貼り付けてください。置換(')を同じ( ')に置き換えます。この歌を追加すると、Excelのデータに表示されますが、置き換えると、非表示になります。

理由により-1票。 機能しません

3. Excelで数値が日付に変換されないようにする方法

このタスクではNotepad ++を使用します。データをNotepad ++にコピーして、「。」を置き換えます。 「、」を使用して、Excelにコピーします。

回避策が遅く、データをそのままにしておく必要があるため、役に立ちません。 機能しません

まず、貼り付け先のセルにマークを付けます。 「フォーマット」を右クリックして、「数値」を選択します。

右クリックして貼り付け、「宛先フォーマットの一致」を選択します

...本当に? 本当に?!

ええ、これは時々本当の痛みです-私の簡単な解決策は、テキストとしてフォーマットされたセルを使用することです。

これがどのように機能するかです:

で番号をコピーします。列を選択するか、一部のセルをセル形式からテキスト形式に変更します。現在、書式なし/プレーンテキストがに置き換わるため、貼り付け(または内容を貼り付け)します。を使用して、形式を数値またはデフォルトに戻します。もちろん、これをいくつかのマクロに含めることができます。

しかし、私はもっと良い解決策があるかもしれません-少なくともあるべきだと思います。

しかし、簡単に言えば、これも機能します;)

早くない。そして、何を推測しますか? 機能しません

この質問への回答

この質問を投稿した後、私は16kの担当者から次の回答を得ました。

Excelのバージョンが何をすべきかについて不平を言うのをやめてください。 Excel 2007は、その機能の計画、開発、およびテストを古い3年のリリースサイクルで行うのに3年かかったことを考えると、ほぼ15年前のものです。あなたがそれについて不平を言うならば、あなたはあなたの回転式電話がテキストメッセージを受け取ることができないと同様に不平を言うかもしれません。他の人が述べたように、Excelの最新バージョンは、苦しむよりも少ない手間で、達成したいことを実行できます。では、アップグレードはどうですか?

これほどひどいバグがあれば、私はそれについて尋ねることで問題を見ません。解決策がない場合でも問題ありませんが、それは、私が考えていなかった方法がないことや、設計どおりに機能していることを意味しません。

とにかく、私は要求に応じて(Excel 2011に)アップグレードし、このスレッドで提案されたすべての回答を試しました。まだサイコロはありません。 機能しません。このポスターが、OSとExcelのバージョンの組み合わせを提案して、正しく動作することが示されているかどうかわかりません。

マイクロソフトは何と言っていますか?

それは 単に繰り返す アポストロフィまたは0を前に付けてフォーマットを維持するか分数フォーマットを使用する、よく知られている(まだ完全に役に立たない)トリックです。セルをテキストとして事前にフォーマットすると、データを手動で入力する場合に機能する場合がありますが、コピーして貼り付ける場合は機能しません。

嘆願

お願いだよ。データを変更せずにスプレッドシートにまとめる方法があることを教えてください!

Excelがデータの形式を推測して要求せずにこれを課した場合でも([形式]オプションとしての貼り付けが理解できないのはなぜですか)、テキストまたは値をコピーして貼り付けると、テーブル構造が正しく保持されます「/」や「-」などの記号で区切られた数字を除いて、考えられる他のすべてのテキスト文字列.

10%$50.634.25E+11などの他の形式で文字列をコピーして貼り付けると、自動フォーマットが行われますが、データの2次元構造が失われることも、値/テキストが変更されることもありません。自体。 Excelは、日付のみを使用して、テキスト文字列を日付値に変換することにより、データの内容を実際に破棄します。セルC7の$50.63はセルC7の$50.63のままですが、7/843319に変更され、5-443195に、6.4はに変更されます43196。これは一方向の関数です-変換を元に戻す方法はありません。コンテキストとコンテンツは永久に失われます。Excelが2番目に推測し、それにもかかわらず、何をしているのかを知る方法を提供していないようですこのサイトのすべての賛成された「解決策」。

-

編集:見出し2の質問ですでに取り上げたので、複製しないでください!

4
Turkeyphant

そのため、さらに多くの調査を行い、@ ProfoundlyObliviousからの非常に有益な情報を受け取った後、私はうまくいくと思われる最良の方法を見つけました。それは完璧とはほど遠いですが、実際には、私が試したすべてのデータソースから機能し、複雑な手順を必要とせず、最も重要なのは時間効率と信頼性です。

さまざまな予測できないソースからデータを取得してExcelまたはCSV形式に変換する必要がある場合、Get Web From VBAスクリプトなどの提案は単に使用できません。

同様に、Excelのさまざまなバージョンで何度も何度も確認しましたが、メモ帳を介して行くと主張している人々が機能するか、セルの事前および/または事後フォーマットが機能しないことを確認しました。残念ながら、カスタムの数値/テキスト形式は使用できません。この形式のデータは、これらのバージョンのExcelで処理した場合、他のデータ形式と比較して明らかに外れていることは明らかです。

何が機能するか

Excelを避けます!

Googleドキュメントのスプレッドシートにコピーして貼り付け、*。xlsxまたは* .csvとして保存するだけで問題ありません。

とても簡単でした。たぶん、Excelの修正方法に対するtrue回答ではないかもしれませんが、はるかに私が見つけた最善の回避策です。迅速、簡単、信頼性があり、私がする必要があるすべてを行います。

1
Turkeyphant

要件を満たす3つの方法と、状況に応じた4つ目の方法を次に示します。はい、そのうち2つはOPで機能しないと言いました。それらはOffice 365 Pro Plusで私のために機能するので、他の多くのために機能します、あなたのマイレージはExcelのバージョンによって異なります:

方法1-コピーして貼り付け

  1. ターゲット範囲をTextとしてフォーマットします
  2. Copy HTMLデータ
  3. Paste使用Match Destination

方法2-Webからデータを取得

  1. リボンの[データ]タブで[データの取得]をクリックします
  2. [他のソースから]にカーソルを合わせて、ドロップダウンメニューを展開します
  3. 「Webから」を選択し、URL /ファイルの場所を入力します
  4. クエリエディターの左側のリストからソーステーブルを選択します
  5. 右下の「編集」をクリックします
  6. リボンの[ホーム]タブの[変換]グループで、すべての列のデータ型をTextに変更します
  7. [閉じる&ロード]をクリックすると、空白のワークシートにテーブルが作成されます

方法3-VBA

  1. 下のコードをモジュールに貼り付けます
  2. PathOrURLをファイルの場所またはURLに変更します
  3. 手順を実行する

これは、データソースがHTMLファイルの最初の、またはおそらく唯一のテーブルであるという前提で作成しました。ソーステーブルの値を文字列に変換し、コピーや貼り付けを使用せずに文字列をワークシートに書き込みます。セルのフォーマットを変更する必要はありません。

MS Internet ControlsおよびMS HTML Object Library参照が必要です

Option Explicit
Sub GetTextFromHTML()
    Dim PathOrURL as String: PathOrURL = Environ("USERPROFILE") & "\Desktop\a4rZKDWK.html"
    Dim IE As New InternetExplorerMedium
    Dim x As Long, y As Long
    Dim tbl As HTMLTable
    Dim sVals() As String
    IE.Navigate PathOrURL
    Do While IE.ReadyState <> READYSTATE_COMPLETE
        DoEvents
    Loop
    Set tbl = IE.Document.getElementsByTagName("table")(0)
    With tbl
    ReDim sVals(1 To .Rows.Length, 1 To .Rows(1).Cells.Length)
        For y = 1 To .Rows.Length
            For x = 1 To .Rows(1).Cells.Length
                    sVals(y, x) = CStr(tbl.Rows(y - 1).Cells(x - 1).innerText)
            Next
        Next
    End With
    IE.Quit
    ActiveSheet.Cells(1, 1).Resize(UBound(sVals), UBound(sVals, 2)).Value = sVals
End Sub

方法4-一時的なエントリ(状況)

  1. リボンの[ファイル]をクリックします
  2. オプションを選択"
  3. 「詳細」を選択します
  4. 一番下までスクロールします
  5. 「移行エントリ」のチェックボックスをオンにします
  6. HTMLデータをコピーする
  7. Excelワークシートに貼り付ける

「トランジションエントリ」を使用する場合は、分数を分数としてコピーして貼り付けることで日付の問題を解決できるためです。ただし、削減可能な分数も単純化されるため、OPの要件を満たしません。 6/9をコピーすると2/3が貼り付けられます。既約分数は問題なく、変更されません。不適切な分数もサポートされています。

単純化された分数は10進数の変換の論理的な結果であるため、Excelがソースデータを分数から小数に変換してから分数に戻しているのではないかと思います。 2/4、3/6、12/24から始めることを検討する場合、それらはすべて0.5の小数に変換されます。彼らがそれを行うと、私たちはそこにある独自性に関するすべての情報を失います。 2/4と3/6を区別することはできますが、0.5と0.5でそれを行うことはできません。10進数から分数に戻って、文字通り0.5に等しい分数の無限の数があり、それらのいずれかを使用できます。すべてが0.5に移動して失われたため、何から始めたのかわかりません。無限の選択肢がある場合に正確に推測する確率はかなり小さいため、最良の結果は完全に削減および簡略化され、1つしかありません。それら... 1/2

残念ながら、先週私が推奨したカスタム形式「#/#」は、「遷移エントリ」とまったく同じ問題を抱えています。それはすべての分数をもたらしますが、貼り付けられるすべての削減可能な分数を簡素化します。

1

それが実際にあるかどうかはわかりませんが、非常に単純な解決策があります-テキストをコピーして特別に貼り付けます->テキスト。すべてが完璧に動作します。

0
Normunds