プロが教えるわが家の防犯対策術!

Excelで年表を作成しています。
年代と本文を分けたいのですが、どのようにやればよいかわかりません。

例えば、B1のセルに1945年太平洋戦争終結。という文字列が入っています。この中の1945年をA1のセルに移動して、B1のセルには太平洋戦争終結をスペースなしで残したいのですが、Excelでは出来るのでしょうか。
MID関数で移動させる手も考えましたが、手間かかりデータを間違えそうで。
なにか良い方法がありましたら、是非、お教え下さい。
よろしくお願い致します。
過去ログも調べたのですが、見落としていたら申し訳ありません。

A 回答 (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の並べ替え機能を使っても、ちゃんと年代順にならないのでは?
結局、手作業・目で確認作業が必要で、数式作って一発で完了とは、いかないのではないでしょうか。
    • good
    • 0
この回答へのお礼

ありがとうございました。
ヒントを頂きました。

お礼日時:2006/02/10 09:54

年と事件を分けるルールは何ですか。

どうも質問者のケースではないようです。であればできません。表面的なルールでなくても、深いところのルールでも良いが、ルールがないものは関数にしろVBAにしろC言語でも処理できません。
西暦1-4桁+年が圧倒的に多ければ、まず年が固定桁の場合はMID関数、浮動の場合FIND関数で年を探し、それを実行後、別のルールを考えては。
A19の14年ああああ
に対し
B19は=LEFT(A19,FIND("年",A19))
C19は=RIGHT(A19,LEN(A19)-FIND("年",A19))
のように。
    • good
    • 0
この回答へのお礼

確かに明確なルールがないと成り立ちません。
数値だけ取り出して処理します。
ありがとうございました。

お礼日時:2006/02/10 10:02

たとえば下記のようなマクロを作成し


ツール→マクロ→マクロでオプションを選択
(たとえば)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
    • good
    • 0
この回答へのお礼

スマートなやり方ですね。ありがとうございます。
ただ、マクロを使うと失敗したとき“元に戻す”効かないのでは?
一つのSheetに3000近いデータがあるので、マクロは怖いです。
というか、マクロの知識がなかったりして...。

お礼日時:2006/02/06 21:52

「1945年太平洋戦争終結」


のように必ず年号が4桁かつ先頭に現れるのであればあまりにも単純すぎるので、いろいろなパターンがあってのご質問と見受けられます。もうすこし例を示していただけませんでしょうか?

この回答への補足

ありがとうございます。
確かに4桁ばかりではなく、B.C.やA.D.が先頭に付く数(例B.C.4世紀)や75000などのような5桁の数字もあります。
作業は、歴史資料を集めては、分類せずExcelのセルに貼り付けています。最後に、バラバラな年代(+本文)を年代別にExcelの“並び替え”で整えます。その為に、数字の抽出が必要になります。原則として、年代は必ず本文の前方に置く事としています。よろしくお願い致します。

補足日時:2006/02/06 20:42
    • good
    • 0

A1: =LEFT(B1,FIND("年",B1))


C1: =SUBSTITUTE(B1,A1,"")
A1:C1 を[コピー]→[値の貼り付け]を実行した後で、B列削除
    • good
    • 0
この回答へのお礼

なるほどいろいろな方法があるのですね。
参考になりました。
ありがとうございます。

お礼日時:2006/02/06 21:32

次の方法は如何でしょうか。



1.データ→区切り位置
2.「スペースによって区切り・・・」を選択→次へ
3.データプレビュー画面の年とイベントの間をクリック→完了
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。
こんな方法もあるのですね。
関数を使わず、簡単な方法で出来ることを教わりました。
ただ、No3.のcockerelさんの欄にあるように数値が、まちまちなのでこの方法は、揃ったデータで使ってみます。

お礼日時:2006/02/06 21:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!