内部に形式(****)で西暦を記載したデータがあります。
西暦に位置は不規則ですが前後に半角の()があります。
例 :
山本薩夫監督による『忍びの者』(1962年)は作品 (以下省略)
続・忍びの者』(ぞく しのびのもの)は、(1963年)公開の日本映画 (以下省略)
吸血鬼ドラキュラは(1958年)のイギリスのハマー・フィルム・プロダクション
このようなデータが約300行あります。
(これからも増えます)
このデータから年号のみを比較して一部加工(西暦抜き出し)して
年代別にソートしたいのですがどうすれば良いでしょうか?
excel上で処理を行いたいので方法を伝授下さい。
上記の例で加工したとしたら、
年代(A列) データ(B列) の順番で下記のようになるようにしたいです。
1958 吸血鬼ドラキュラは(1958年)のイギリスのハマー・フィルム・プロダクション
1962 山本薩夫監督による『忍びの者』(1962年)は作品
1963 続・忍びの者』(ぞく しのびのもの)は、(1963年)公開の日本映画
宜しくお願いします。
No.8
- 回答日時:
添付図参照
Sheet1!B2: =MID(A2,FIND("年)",A2)-4,4)+ROW()/1000
Sheet2 の範囲 A2:C2 を選択(アクティブセルは A2)して、次の[条件付き書式]を設定
数式が =ISERROR(A2)
フォント色 白
Sheet2!C2: =SMALL(Sheet1!B:B,ROW(A1))
Sheet2!A2: =INT(C2)
Sheet2!B2: =INDEX(Sheet1!A:A,MATCH(C2,Sheet1!B:B,0))
範囲 A2:C2 を下方にズズーッとドラッグ&ペースト
No.6
- 回答日時:
No.5です!
西暦は(1962)のようになっているというコトですので・・・
前回のコードの少し手を加えてみました。
(括弧や数値は全角でも半角でも対応できます)
もう一度手を加えたコードを載せておきます。
Sub test() 'この行から
Dim i, k As Long
Dim str1, str2 As String
Dim ws As Worksheet
Set ws = Worksheets(2)
ws.Cells.ClearContents
Application.ScreenUpdating = False
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
For k = 1 To Len(Cells(i, 1))
str1 = StrConv(Mid(Cells(i, 1), k, 6), vbNarrow)
str2 = Mid(str1, 2, 4)
If IsNumeric(str2) And Right(str1, 1) = ")" Then
With ws.Cells(Rows.Count, 1).End(xlUp).Offset(1)
.Value = str2
.Offset(, 1) = Cells(i, 1)
End With
End If
Next k
Next i
Application.ScreenUpdating = True
ws.Columns("A:B").Sort key1:=ws.Cells(1, 1), order1:=xlAscending
ws.Columns.AutoFit
End Sub 'この行まで
こんな感じではどうでしょうか?m(_ _)m
No.5
- 回答日時:
こんばんは!
VBAでの一例です。
Sheet1のデータはA列に入っていて、1行目からデータがあるとします。
Sheet2に表示するようにしてみました。
画面左下のSheet1のSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
Sub test() 'この行から
Dim i, k As Long
Dim str1, str2 As String
Dim ws As Worksheet
Set ws = Worksheets(2)
ws.Cells.ClearContents
Application.ScreenUpdating = False
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
For k = 1 To Len(Cells(i, 1))
str1 = StrConv(Mid(Cells(i, 1), k, 7), vbNarrow)
str2 = Mid(str1, 2, 4)
If IsNumeric(str2) And Mid(str1, 6, 2) = "年)" Then
With ws.Cells(Rows.Count, 1).End(xlUp).Offset(1)
.Value = str2
.Offset(, 1) = Cells(i, 1)
End With
End If
Next k
Next i
Application.ScreenUpdating = True
ws.Columns("A:B").Sort key1:=ws.Cells(1, 1), order1:=xlAscending
ws.Columns.AutoFit
End Sub 'この行まで
※ 今後もデータが増えるというコトですので、Sheet1のデータ変更があるたびにマクロを実行してみてください。
参考になれば良いのですが・・・m(_ _)m
みなさま、レスありがとうございます。
補足ですが”(”(半角)及び”)”(半角)は1行のデータ内には
西暦の前後以外には、存在しません。
それと、こちらで、データーを改ざんしてデータの形式を変更してしまいました。
(色々、データを修正してるうちに、誤って最初のデータを削除してしまいました。
修正前のデータは別のPCに残っているのですが....手元にありません。)
誠にすいませんが、下記で検討お願いします。
西暦は、必ず最後になります。
例:
山本薩夫監督による『忍びの者』(1962)
となります。
(”年”の文字は、データから削除しました。)
”(”の後に4桁の西暦番号で最後に”)”です。
勝手なお願いですが、フォローお願いします。
-----------
返事を書いている間に回答をいただきました。
VBAを試してみたいと思います。
検証に時間を戴けると幸いです。
データを改ざんしてしまったの提示頂いたでマクロで不具合があればフォローお願いします。
(VBAも一応、操作できますが”マクロ使い”でないので詳しい内容になると??です。)
No.4
- 回答日時:
いろいろなやり方があるとは思いますが、
たとえばB列にデータがあるとして、
必ず「年」という文字の前に西暦が4桁で入っているのですから、
他に「年」という文字がないという前提がつきますが、
=mid(b1,(find("年",b1)-4),4) -4で良いのかどうかちょっと怪しいですがそこは調整してください。
で年を切り出せないでしょうか?
みなさま、レスありがとうございます。
補足ですが”(”(半角)及び”)”(半角)は1行のデータ内には
西暦の前後以外には、存在しません。
それと、こちらで、データーを改ざんしてデータの形式を変更してしまいました。
(色々、データを修正してるうちに、誤って最初のデータを削除してしまいました。
修正前のデータは別のPCに残っているのですが....手元にありません。)
誠にすいませんが、下記で検討お願いします。
西暦は、必ず最後になります。
例:
山本薩夫監督による『忍びの者』(1962)
となります。
(”年”の文字は、データから削除しました。)
”(”の後に4桁の西暦番号で最後に”)”です。
勝手なお願いですが、フォローお願いします。
No.3
- 回答日時:
「山本薩夫監督による『忍びの者』(1962年)は作品」
などのデータが入力されている列の前が空いていれば、
(下記例はB1からデータが入力されている場合です)
1.
その空いている前の列(例はA1)に
=MID(B1,FIND("年",B1)-4,4)
と入れて、下にフィルドラッグする。
2.
A列とB列を選択して、「並べ替え」をすればいい。
列が空いていなければ、列を挿入する。
みなさま、レスありがとうございます。
補足ですが”(”(半角)及び”)”(半角)は1行のデータ内には
西暦の前後以外には、存在しません。
それと、こちらで、データーを改ざんしてデータの形式を変更してしまいました。
(色々、データを修正してるうちに、誤って最初のデータを削除してしまいました。
修正前のデータは別のPCに残っているのですが....手元にありません。)
誠にすいませんが、下記で検討お願いします。
西暦は、必ず最後になります。
例:
山本薩夫監督による『忍びの者』(1962)
となります。
(”年”の文字は、データから削除しました。)
”(”の後に4桁の西暦番号で最後に”)”です。
勝手なお願いですが、フォローお願いします。
No.2
- 回答日時:
西暦4桁限定での抽出なら、下記の数式で可能です。
A2=MID(B2,FIND("年)",B2)-4,4)*1
みなさま、レスありがとうございます。
補足ですが”(”(半角)及び”)”(半角)は1行のデータ内には
西暦の前後以外には、存在しません。
それと、こちらで、データーを改ざんしてデータの形式を変更してしまいました。
(色々、データを修正してるうちに、誤って最初のデータを削除してしまいました。
修正前のデータは別のPCに残っているのですが....手元にありません。)
誠にすいませんが、下記で検討お願いします。
西暦は、必ず最後になります。
例:
山本薩夫監督による『忍びの者』(1962)
となります。
(”年”の文字は、データから削除しました。)
”(”の後に4桁の西暦番号で最後に”)”です。
勝手なお願いですが、フォローお願いします。
No.1
- 回答日時:
他に「 ( 」がなければ
=Mid(「セル参照」,Find(")",「セル参照」.1)+1,3)
で西暦の4ケタの数字を抽出することができますので、オリジナルデータが入力された列の一つ前の列に西暦を抜き出した数字を並べ、その列とオリジナルの列のデータがある範囲を選択してユーザー設定のソート(キーを「西暦の数字として」をかければご希望のようになると思います。
みなさま、レスありがとうございます。
補足ですが”(”(半角)及び”)”(半角)は1行のデータ内には
西暦の前後以外には、存在しません。
それと、こちらで、データーを改ざんしてデータの形式を変更してしまいました。
(色々、データを修正してるうちに、誤って最初のデータを削除してしまいました。
修正前のデータは別のPCに残っているのですが....手元にありません。)
誠にすいませんが、下記で検討お願いします。
西暦は、必ず最後になります。
例:
山本薩夫監督による『忍びの者』(1962)
となります。
(”年”の文字は、データから削除しました。)
”(”の後に4桁の西暦番号で最後に”)”です。
勝手なお願いですが、フォローお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- 日本語 「2025年」のことを何と言いますか? 「2025年」=「西暦年」ではないので西暦年のひとつですか? 6 2022/05/07 16:18
- Excel(エクセル) Excelマクロの差分抽出のコードを教えていただきたいです。 2 2023/03/14 11:40
- Excel(エクセル) Excelで、昭和の西暦換算 6 2023/03/23 11:29
- Excel(エクセル) Excel2019、2021の売り上げなどの集計表について 4 2022/11/29 14:03
- 政治 これは自民党の作った現在の法律が悪いから、起こったのではないですか? 7 2022/05/06 10:22
- 戦争・テロ・デモ 山上容疑者は自衛隊員だったそうですが、中核自衛隊の気分で入隊したのですか? 1 2022/09/17 15:43
- 日本語 昔の人は日本と書くのに、「日」「大」「十」と書いてましたが、何故ですか? 3 2023/07/05 16:39
- Excel(エクセル) Excelで全クラスのランキング表を作成したい 4 2022/05/24 15:28
- 政治 山上徹也の映画が、安倍元首相の国葬の日に公開されるそうです。 5 2022/09/26 07:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel2017 フィルタ昇順並びがA...
-
エクセルで行の高さ及び列幅の...
-
Excelで並び替え後にア行...
-
オートフィルタ後のデータから...
-
エクセル VBA 行間隔を飛ばした...
-
基準日以前のデータを範囲を指...
-
急ぎ!色のついたセルを非表示...
-
【Excel VBA】指定した行の最大...
-
平均変化率の信頼区間
-
文字列を比較し、相違するフォ...
-
VBA 検索条件にヒットした行を...
-
エクセル データの入力規制「リ...
-
矩形範囲の複数列を縦1列に並...
-
時間の重複チェック
-
EXCELマクロを使い、空白行では...
-
【Excel】数式の参照範囲を可変...
-
Excel VBAでセルのクリアが出来...
-
エクセル 抽出したデータを添...
-
プルダウンに【なし、平均、デ...
-
複数回答のクロス集計の方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel2017 フィルタ昇順並びがA...
-
Excelで並び替え後にア行...
-
エクセルで行の高さ及び列幅の...
-
平均変化率の信頼区間
-
急ぎ!色のついたセルを非表示...
-
オートフィルタ後のデータから...
-
【Excel VBA】指定した行の最大...
-
エクセルの時刻のカウントが出...
-
基準日以前のデータを範囲を指...
-
EXCELで日付を比べ3か月以内の...
-
マクロで行の高さを設定したい
-
エクセル関数について
-
文字列を比較し、相違するフォ...
-
エクセル関数について
-
excel / ピポッド 日数を出したい
-
エクセル VBA 行間隔を飛ばした...
-
時間の重複チェック
-
プルダウンに【なし、平均、デ...
-
EXCEL 最終行のデータを他のセ...
-
列と行の名前(重複あり)が交...
おすすめ情報