エクセルにお強い方、教えてください><
A1のセルに、
山田 花子(ヤマダ ハナコ)
とあるとします。
私は
B1のセルに
山田 花子
C1のセルに
(ヤマダ ハナコ)
と、分けてデータ化させたいのですが、
どのようにマクロを組めばよいでしょうか?
また、分け終わったC1の(ヤマダ ハナコ)に
置換を使って( )をとって、
カナ を かな に直すため、
PHONETICと書式のふりがな機能を使って直しても
データにエラーは起きずに処理できるでしょうか?
最終的なデータとして
A1セル→山田 花子(やまだ はなこ)
B1セル→山田 花子
C1セル→やまだ はなこ
としたいのです。
ご存知の方いらっしゃいましたら、教えてください。
宜しくお願い致します。
No.5ベストアンサー
- 回答日時:
No.3です!
たびたびごめんなさい。
C列がカタカナの場合はひらがなに直さないといけなかったのですね?
もう一度コードを載せておきます。
Sub test()
Dim i As Long
Dim buf As String
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
On Error Resume Next
buf = WorksheetFunction.Substitute(WorksheetFunction.Substitute _
(Cells(i, 1), "(", "("), ")", ")")
With Cells(i, 2)
.Value = Mid(buf, 1, WorksheetFunction.Find("(", buf) - 1)
.Offset(, 1) = Mid(buf, WorksheetFunction.Find _
("(", buf) + 1, Len(buf) - Len(Cells(i, 2)) - 2)
.Offset(, 2) = StrConv(Cells(i, 3), vbHiragana)
End With
Next i
Columns(3).Delete (xlToLeft)
Columns("A:C").AutoFit
End Sub
こんな感じではどうでしょうか?
何度も失礼しました。m(__)m
No.7
- 回答日時:
A1に山田花子とありB列に=A1&"("&PHONETIC(A1)&")"と入って、山田 花子(ヤマダ ハナコ)となっているので「ない」場合を考える。
こういう場合もあるということ。ーー
?1に山田 花子(ヤマダ ハナコ)とある場合は、データー区切り位置ーその他で( 左カッコ を指定ー完了
で出来る。
)は置換で抹消する。
これが一番簡単で安定。さらにB列で)で区切り位置にしても良い。
マクロの記録をすれば、VBAコードはわかる。
複数行分もはじめ範囲指定して始めれば良い。
ーー
VBAでReplaseやInstr関数でやる手もあるが、関数などでやるのが良かろう。VBAの勉強をしているのですか。
1回限りの作業のようだし、VBAを使うまでも無いだろう。
エクセルに強い方でなくても出来ることだ。
No.6
- 回答日時:
『山田 花子(ヤマダ ハナコ)』
VBAでは
この文字数分(=14)ループしてもできる話です。
区切り分けたり、(括弧)を削除したり、かなに変えたり、
とすべてを処理しながらB列やC列の編集をする。
No.3
- 回答日時:
こんばんは!
関数の方が簡単なような気がしますが、VBAをご希望のようなので・・・
一例です。
(単に関数でやる方法をコードにしただけです)
A列のデータは1行目からあり、必ず( )があるという前提です。
Sub test()
Dim i As Long
Dim buf As String
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
On Error Resume Next
buf = WorksheetFunction.Substitute(WorksheetFunction.Substitute _
(Cells(i, 1), "(", "("), ")", ")")
With Cells(i, 2)
.Value = Mid(buf, 1, WorksheetFunction.Find("(", buf) - 1)
.Offset(, 1) = Mid(buf, WorksheetFunction.Find _
("(", buf) + 1, Len(buf) - Len(Cells(i, 2)) - 2)
End With
Next i
Columns("A:C").AutoFit
End Sub
こんな感じではどうでしょうか?m(__)m
No.1
- 回答日時:
Sub Macro1()
Dim r As Long
r = Range("A65536").End(xlUp).Row
Range("A1:A" & r).Replace what:=")", replacement:="", matchbyte:=False
Range("A1:A" & r).Replace what:="(", replacement:="(", matchbyte:=False
Range("A1:A" & r).TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
Other:=True, OtherChar:="(", FieldInfo:=Array(Array(1, 1), Array(2, 1))
Range("B:B").Phonetics.CharacterType = xlHiragana
Range("C1:C" & r).Formula = "=PHONETIC(B1)"
Range("A:A").Insert
Range("A1:A" & r).Formula = "=B1&""(""&D1&"")"""
Range("A1:D" & r).Value = Range("A1:D" & r).Value
Range("C:C").Delete
Range("A:C").EntireColumn.AutoFit
End Sub
#要らないループ処理は省いているので,見た目なんだかべたべたですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの関数式を教えてください。 2 2022/11/29 21:09
- Excel(エクセル) エクセルVBAでセルに表示されているとおりの数値を取得したい(時間の計算結果) 1 2022/03/30 17:52
- Excel(エクセル) エクセル表作成について 5 2023/03/12 13:25
- Excel(エクセル) エクセルで月末、月初の判定をしたい。 4 2022/05/18 23:22
- Excel(エクセル) Excel 関数 数式 について 2 2022/09/02 21:45
- Excel(エクセル) エクセルで、 A1セルに「A」という値、 B1セルに「B」という値が入っています。 どちらも表示形式 5 2023/02/22 23:05
- Excel(エクセル) Excelについて A1からA12まで、1月〜12月と入力し、 B1からB12の範囲に、C1とD1に 4 2022/05/26 22:48
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) Excelで数式をそのままコピーしたい どうすればいいですか? 4 2022/09/16 02:16
- Excel(エクセル) WORKDAY関数 4 2023/06/08 13:23
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
漢字説明
-
関係ないから~♪関係ないから~...
-
テレビ番組でよく芸人宅に入っ...
-
ファンが有名人に「一緒に写真...
-
水芸のしくみを教えてください
-
名字が漢字で名前がひらがなの...
-
次長課長の井上さんの変わり様
-
関東芸人が全然おもしろくない...
-
ジュニアアイドルでしか抜けな...
-
ジョビジョバ
-
大阪のお笑い。。。どこが面白...
-
女優さんの名前教えてください
-
オーバーオールの似合う芸能人...
-
近くに住んでいる芸能人います?
-
最近「鳥肌実」って芸人さん(?...
-
ケツアゴって欠陥ですか?ケツ...
-
このアダルト女優の名前を教え...
-
たれ目の芸人…名前忘れました
-
日本はなぜテレビの司会者にお...
-
ヤッターマンのドロンジョのセリフ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
おすすめ情報