- ベストアンサー
Excelでの文字の置き換え方法
Excelで、各セルが次のような状態であったとします。 ・一部のセルには、年月日が入力されている(表示形式の分類は「日付」) ・入力されていないセルは空欄だが、表示形式の分類は「日付」である この状態で、年月日が入力されているセルのみ「○」で置き換えし、空欄のセルはそのままにしたいのです(つまり、何かが入力されているセルのみ置き換えしたい)。 しかし、年月日が入力されているセルと空欄のセルが、各列で不規則に混ざっているために、一気に置き換えしようとすると、全部のセルが「○」に置き換えられてしまうのです。 何かが入力されているセルのみ、一気に「○」に置き換える方法はないでしょうか? いくら調べてもわかりませんでした。みなさんのアドバイスをお待ちしています。m(__)m
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
1度限りでいいのなら、以下の方法を試してみてはいかがでしょう。 1.時間の入っている範囲を空白も含めて選択する 2.編集→ジャンプで開いたダイアログでセル選択をクリック 3.選択の所で、数式 数値だけを選択してOK これで年月日の入ったセルだけが選択されます。 4.数式バーに ○ と入力し Ctrl + Enter を同時押し これで数字の入っているセルが全て○に置き換わります。 元のデータを残しておきたいのであれば・・ 元データのシートのデータ範囲を全てコピー(見出し等の文字列の 部分も含む)新しいシートで右クリック→形式を選択して貼り付け →リンク貼付けを選んで下さい。 日付部分を選択すると、数式バーに =Sheet1!$A$1などとシート名と セルが表示されていると思いますので、それを下の関数に書き換えて 日付部分にオートフィルでコピーすれば○が表示されます。 =IF(Sheet1!A1<>"","○","") ↑かならず $は取ってください。
その他の回答 (2)
- nicotinism
- ベストアンサー率70% (1019/1452)
マクロで考えて見ました。 ※まずはバックアップを取ってからお試しください。 標準モジュールに以下をコピペして、マクロの実行。 Sub test() Dim r As Range 'Debug.Print ActiveSheet.UsedRange.Count For Each r In ActiveSheet.UsedRange Debug.Print r.Address, r.Value, r.NumberFormatLocal, IsDate(r.Value) 'If r.NumberFormatLocal="yyyy/m/d" And r.Value <> "" Then If IsDate(r.Value) Then r.Value = "○" & Format(r.Value, "yyyy/mm/dd") End If Next End Sub 検証の為、日付の前に○を入れるようにしています。 OK なら r.Value = "○" & Format(r.Value, "yyyy/mm/dd") を r.Value = "○" '& Format(r.Value, "yyyy/mm/dd") にして本番で行ってみて下さい。 ※詳しく検証したわけではないので、間違いないと確信するまでは バックアップは残しておいた方が良さそうです。
お礼
今回は別の方法で解決しましたが、マクロも試してみる価値はありそうですね。有難うございます。m(__)m
- imogasi
- ベストアンサー率27% (4737/17069)
多分VBAでないと無理でしょう。 日付書式のセルは検索ー書式ー日付で検索できるようですが、日付値が入っているセルと、日付書式だけの空白セルが区別できない。 日付の入ったセルもセルの値(関数式で問題にするものは値)で言えば日付シリアル値という整数ですし。
お礼
何とか、「ジャンプ」と「置換」を組み合わせる方法で解決しました。有難うございます。m(__)m
お礼
教えていただいた方法で解決しました! どうも有難うございました。m(__)m