![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.5ベストアンサー
- 回答日時:
ANo.1です。
無理やりVBAで作って見ました。
半分勉強で作ったので、あまり良いコードとは言えませんし、質問者のご理解を超えているかも知れませんが、ご参考までに。
A2:A10に入っている元データをB列に邦題、C列に原題、D列に作成年を入れています。
括弧やスペースに全角・半角が混じるとやりにくいので、全て半角にしてから処理しています。
そのせいでカタカナも半角になってしまいますが、その辺は手抜きをして半角のままにしています。
原題は、英数字と記号だけで構成されていると言う前提です。中国映画など、全角の原題があるとNGです。
邦題は、元データをスペースで区切って英数字と記号以外が入っている箇所から前。ただし、1番目の区切りは絶対に邦題。
# AB CD いい AB CD EE → 邦題:AB CD いい 原題:AB CD EE
# AB CD EE AB CD EE → 邦題:AB 原題:CD EE AB CD EE
製作年は、(1???)か(2???) を満たす4桁の数字です。
なお、正規表現を使いますので「Microsoft VBScript Regular Expressions 5.5」を参照設定してください。
また、当然ですが、これで完璧に振り分けられるわけでは有りませんので、最終的には手で修正する必要が有ります。
Sub TEST()
Dim RE, rWork, m
Dim r, sTitle, sData, sHou, sGen, sYear, i, nYs, sNarrow, sNarrowR
Set RE = CreateObject("VBScript.RegExp") '正規表現用
With RE
For Each r In Range("A2:A10") '対象セル範囲
sHou = ""
sGen = ""
sYear = ""
nFlag = 0
sTitle = StrConv(r.Value, vbNarrow) '全部半角に変換
If sTitle = "" Then Exit Sub
'製作年があれば抜き出す
.Global = False
.Pattern = "\([1-2][0-9][0-9][0-9]\)"
Set rWork = .Execute(sTitle)
For Each m In rWork
sYear = m.Value
sTitle = .Replace(sTitle, "")
sYear = Mid(sYear, 2, 4)
Next m
'半角スペースで区切る
sData = Split(sTitle, " ")
'区切った物を後ろからチェック
For i = UBound(sData) To 1 Step -1
'区切った物の中に英数字+記号が入っている?
sNarrow = StrConv(sData(i), vbNarrow) '半角に変換
.Global = True
.Pattern = "[^!-~]" '英数字と記号以外を抜き出すパターン
sNarrowR = .Replace(sNarrow, "") '更に正規表現で英数字+記号のみに
If StrComp(sNarrow, sNarrowR) <> 0 Then nFlag = 1
If nFlag = 0 Then
sGen = sData(i) & " " & sGen
Else
sHou = sData(i) & " " & sHou
End If
Next i
sHou = sData(0) & " " & sHou
'セルに表示
r.Offset(0, 1).Value = Trim(sHou)
r.Offset(0, 2).Value = Trim(sGen)
r.Offset(0, 3).Value = sYear
Next r
End With
Set RE = Nothing
End Sub
![「Excel2003で、映画の邦題と原題が」の回答画像5](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/f/1241782_5497e7fc52091/M.jpg)
有難うございました。ご回答を理解するのに手間取りまして、御礼が遅くなってしまいました。
改めてマクロを勉強しなおします。
お世話になりました。
No.6
- 回答日時:
先ほどの回答の訂正です。
> なお、正規表現を使いますので「Microsoft VBScript Regular Expressions 5.5」を参照設定してください。
と、書きましたが、CreateObjectを使っていたので参照設定不要でした。失礼しました。
No.4
- 回答日時:
NO2です。
>このFIND関数は”(”の前までの文字数を指定してるのでしょうか?
⇒この場合、最左端からの左括弧の位置なので「-1」して邦題の文字数としています。
>説明不足でしたが、括弧で括った年代が無いものもありますし、原題の後ろになってるのもあります。
⇒この条件を明確にする事が肝心です。
>日本語部分、英語部分を抽出出来ないかと希望して質問しました。
⇒私は、年代が日本語と英語部分を切り分けられると解釈して提案しましたが、切り分け条件が数パータンあるのであれば、どの方法を選択しても一括にはできませんので各回答を組み合わせてお試しください。
No.3
- 回答日時:
エクセルの基本機能で
データー区切り位置ースペースでやるのは常識です。
これでA,B列2列に分かれたらB列でカッコ(で分けてみること。2段操作。
ここまでぐらいやって、うまく行かない点は質問すべき程度の問題。
最後の)は置換で消すとか。
この回答への補足
有難う御座いました。
スペース区切りは、列全体をまとめて実行する方法が分からなかったのですが、改めて調べてみてLEFT関数で出来そうです。但し、邦題内にも、原題内にもスペースがある場合が有ります。実行してみて手で補正する箇所が多ければ質問し直します。
英語部分、日本語部分を抽出するのはVBAを使わないと無理なのでしょうか?
No.2
- 回答日時:
一例です。
(1)データはA2以下に入力されている事とし、B2、C2、D2に抽出します。
B2に=MID(A2,1,FIND("(",A2)-1)
C2に=TRIM(MID(A2,FIND(")",A2)+1,LEN(A2)))
D2に=MID(A2,FIND("(",A2)+1,4)
B2:D2を選択して下方向にコピー
(2)FIND関数での括弧文字列は全角としていますので相違していれば調整して下さい。
(3)抽出セルは数式の為、これをデータとして取り扱う場合、抽出範囲をコピー→形式を選択して貼り付け→値を選択→OKとして下さい。
この回答への補足
有難う御座いました。
MID関数では、先頭位置は指定出来ますが、文字数の指定が分からなかったのですが、このFIND関数は”(”の前までの文字数を指定してるのでしょうか?説明不足でしたが、括弧で括った年代が無いものもありますし、原題の後ろになってるのもあります。
日本語部分、英語部分を抽出出来ないかと希望して質問しました。
No.1
- 回答日時:
必ず括弧でくくられた製作年が入っているのでしたら、[データ]→[区切り位置]で括弧を区切り文字に指定して区切っては?
1.「邦題(製作年)原題」が入っている列を対象にメニューの[編集]→[置換]で、「)」を「(」に置換(データ区切りを一回で行うための小細工)
2.メニューの[データ]→[区切り位置]で「カンマやタブなどの区切り文字によって……」を選択して<次へ>
3.区切り文字「その他」を選択して「(」を入力して<完了>
これで、「邦題」「製作年」「原題」に分かれます。
ただし、括弧が入っているタイトルはおかしな区切り方になってしまいますので、それは手で直しましょう。
この回答への補足
有難う御座いました。
必ずしも入ってるわけでは有りません。5000近くデータが在りますが、入ってない方が多いいです。
年代を拾い出すのに、括弧で括った部分を抽出する方法は在りますでしょうか?
どうぞ宜しくご教示下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルからビジオのリンク貼り付け 1 2023/03/30 17:51
- Excel(エクセル) Excelで2つのセルにある日付を参照させ期間として1つのセルに表示したいです。 例 c9セルに開始 3 2023/04/06 12:16
- Excel(エクセル) Excel2019 マクロを使用し画像を貼り付けした際のリンク切れについて 2 2022/11/15 16:14
- Excel(エクセル) Excelで数式をそのままコピーしたい どうすればいいですか? 4 2022/09/16 02:16
- Excel(エクセル) 【EXCEL】=セル&セルが上手く表示できない。 7 2022/09/04 21:32
- Excel(エクセル) Excel 毎日手作業で時間がかかって、泣きたいです、、、VBAのプロの方、助けてください。。。 3 2022/10/25 04:26
- Excel(エクセル) ExcelVBA メモ帳を起動し名前を付けて指定フォルダに保存 2 2022/04/18 13:15
- Visual Basic(VBA) Excel vbaについて知恵もしくは、コード教えて下さいm(__)m ① 表にあるデータをコピー、 2 2022/09/01 23:57
- Excel(エクセル) エクセルについて教えてください。 2 2023/06/14 11:11
- Excel(エクセル) エクセルについて教えてください。 1 2023/03/03 08:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
有頂天ホテル、YOUの歌ったタイ...
-
金曜ロードショーってなんなん...
-
映画の舞台挨拶って上映前?上...
-
役不足について
-
『X-MEN:ファイナルディシジョ...
-
年間、どれくらいの数の映画を...
-
ロード・オブ・ザ・リングのラスト
-
グロ映画のタイトルが思い出せ...
-
ハッピーエンドの逆は?
-
続編映画タイトルのバリエーシ...
-
ハリー・ポッターとロードオブ...
-
浦沢直樹のMONSTERの解釈(ネタ...
-
ウォーリーにそっくりな映画
-
家で映画を見るとき電気を消し...
-
レイトショーってネイティヴも...
-
大人だって欲しい、子どもの特...
-
森本梢子さんの「わたしがママ...
-
ギャング・マフィアが悪役の映...
-
松本人志のギャグ
-
どのくらい好きになったら、告...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessのクエリで、あいまい検...
-
有頂天ホテル、YOUの歌ったタイ...
-
「リプレイスメント」の曲
-
私の頭の中の消しゴムの主題歌
-
「日々是好日」の英訳をお願い...
-
「我が命尽きるとも」の原題は...
-
単語ごとに「・」を入れない題名
-
映画原題の意味(フランス語)
-
はねるのトびらの短縮言葉
-
ドイツの童謡?Kommt ein Vogel...
-
ミシェル・ヨーさんがアカデミ...
-
プッチーニの曲の原題名
-
黒田瞳主演のCM、「MOST」の曲
-
アメリカで「The Last Day」と...
-
ディスコファインのCMで流れてる歌
-
映画の舞台挨拶って上映前?上...
-
続編映画タイトルのバリエーシ...
-
結局、「アリータ・バトル・エ...
-
グロ映画のタイトルが思い出せ...
-
ディズニーが、実写版人魚姫や...
おすすめ情報