- ベストアンサー
Excelで、セル内の特定の文字を移動する方法を教えてください。
Excelで年表を作成しています。 年代と本文を分けたいのですが、どのようにやればよいかわかりません。 例えば、B1のセルに1945年太平洋戦争終結。という文字列が入っています。この中の1945年をA1のセルに移動して、B1のセルには太平洋戦争終結をスペースなしで残したいのですが、Excelでは出来るのでしょうか。 MID関数で移動させる手も考えましたが、手間かかりデータを間違えそうで。 なにか良い方法がありましたら、是非、お教え下さい。 よろしくお願い致します。 過去ログも調べたのですが、見落としていたら申し訳ありません。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
まだ締め切られてないようですので・・・ 区切るべき文字を全てピックアップして、何文字目に区切ればいいかをとりあえず数値にする。 C1 =IF(ISNUMBER(FIND("年",B1)),FIND("年",B1),0) D1 =IF(ISNUMBER(FIND("世紀",B1)),FIND("世紀",B1)+1,0) 「+1」は"世紀"が2文字だから その他にも区切るべき文字があれば、E1,F1・・・同じように G1 =LEFT(B1,MAX(C1:H1)) 区切るべき文字に"○○年代"とか"○○世紀頃"とかが混ざってると上記の式では失敗。 それから英数混じりでは、Excelの並べ替え機能を使っても、ちゃんと年代順にならないのでは? 結局、手作業・目で確認作業が必要で、数式作って一発で完了とは、いかないのではないでしょうか。
その他の回答 (5)
- imogasi
- ベストアンサー率27% (4737/17069)
年と事件を分けるルールは何ですか。どうも質問者のケースではないようです。であればできません。表面的なルールでなくても、深いところのルールでも良いが、ルールがないものは関数にしろVBAにしろC言語でも処理できません。 西暦1-4桁+年が圧倒的に多ければ、まず年が固定桁の場合はMID関数、浮動の場合FIND関数で年を探し、それを実行後、別のルールを考えては。 A19の14年ああああ に対し B19は=LEFT(A19,FIND("年",A19)) C19は=RIGHT(A19,LEN(A19)-FIND("年",A19)) のように。
お礼
確かに明確なルールがないと成り立ちません。 数値だけ取り出して処理します。 ありがとうございました。
- o_chi_chi
- ベストアンサー率45% (131/287)
たとえば下記のようなマクロを作成し ツール→マクロ→マクロでオプションを選択 (たとえば)aをいれてOK→キャンセルで ショートカットを登録します。 これで分割したいセルを選択した状態で Ctrl+aで文字列が分割できます。 --- Sub m() Dim a As Range Set a = ActiveCell Cells(a.Row, 1) = Left$(a.Value, InStr(1, a.Value, "年")) Cells(a.Row, 2) = Mid$(a.Value, InStr(1, a.Value, "年") + 1) End Sub
お礼
スマートなやり方ですね。ありがとうございます。 ただ、マクロを使うと失敗したとき“元に戻す”効かないのでは? 一つのSheetに3000近いデータがあるので、マクロは怖いです。 というか、マクロの知識がなかったりして...。
- cockerel
- ベストアンサー率46% (253/548)
「1945年太平洋戦争終結」 のように必ず年号が4桁かつ先頭に現れるのであればあまりにも単純すぎるので、いろいろなパターンがあってのご質問と見受けられます。もうすこし例を示していただけませんでしょうか?
補足
ありがとうございます。 確かに4桁ばかりではなく、B.C.やA.D.が先頭に付く数(例B.C.4世紀)や75000などのような5桁の数字もあります。 作業は、歴史資料を集めては、分類せずExcelのセルに貼り付けています。最後に、バラバラな年代(+本文)を年代別にExcelの“並び替え”で整えます。その為に、数字の抽出が必要になります。原則として、年代は必ず本文の前方に置く事としています。よろしくお願い致します。
A1: =LEFT(B1,FIND("年",B1)) C1: =SUBSTITUTE(B1,A1,"") A1:C1 を[コピー]→[値の貼り付け]を実行した後で、B列削除
お礼
なるほどいろいろな方法があるのですね。 参考になりました。 ありがとうございます。
- mu2011
- ベストアンサー率38% (1910/4994)
次の方法は如何でしょうか。 1.データ→区切り位置 2.「スペースによって区切り・・・」を選択→次へ 3.データプレビュー画面の年とイベントの間をクリック→完了
お礼
早速のご回答ありがとうございます。 こんな方法もあるのですね。 関数を使わず、簡単な方法で出来ることを教わりました。 ただ、No3.のcockerelさんの欄にあるように数値が、まちまちなのでこの方法は、揃ったデータで使ってみます。
お礼
ありがとうございました。 ヒントを頂きました。