[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『2019年(・・・)を(から隣のセルに区切りたいのですが』(ひろ)
いつもお世話になっております
2019年(・・・)を(から隣のセルにデータ区切りで区切りたいのですが
Selection.TextToColumns Destination:=Range("A146"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
:=")", FieldInfo:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
という記録を取りましたが 2019年(・・・)というセル全てに適用したいときってRange("A146")はどうすればよろしいでしょうか
わかりにくければすいませんよろしくおねがいします
< 使用 Excel:Excel2010、使用 OS:Windows7 >
(稲葉) 2019/01/31(木) 21:39
(稲葉) 2019/01/31(木) 22:08
If Not myRange Is Nothing Then
Set firstCell = myRange
Do
Set myRange = Cells.FindNext(myRange)
Selection.TextToColumns Destination:=Range(myRange), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
:=")", FieldInfo:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
Loop While myRange.Address <> firstCell.Address
End If
End Sub
これでよろしいでしょうか
(ひろ) 2019/01/31(木) 22:35
自分で試してできていればいいのだから聞く必要ないでしょう (稲葉) 2019/01/31(木) 23:00
同じ方なのかわからないですけど、
[[20190130202008]] 『特定の単語の横のセルの値を取得して他のセルに入』(ひろ)
[[20190129114306]] 『特定の列の特定の単語を検索して その単語の横の』(ひろ)
↑も含めて【自分で】試せばわかることを聞くのはどうかと思いますよ。
>エラーが出ましてどうすればよいかわからなくて
本当にエラーが出て困っているなら、どの行でどのようなエラーがでているのか説明しないとアドバイスのしようがないですよね。
(今回のケースは、Find(FindNext)メソッドで該当セルを探す部分と、データの区切り機能で、内容を分割出力する部分をごちゃまぜにしたのが良くないように思いますが・・・)
単に、自分で実験データ作ってテストするのがめんどくさいのでタダでデバック作業やってくれる人募集だったら、素直にそう言ってみたらどうでしょう。すっごい暇な人なら相手してくれる・・・かも?
また、(ひろ)という名前で投稿されているいくつかのトピックが放置状態になっているので、もしご本人であれば、あきらめるにしろ、もう少し頑張ってみるにしろ、新しいことを聞く前にそちらから整理したほうが良い様におもいます。
※どうやら、少なくともお二人のかたが、(ひろ)という名前をお使いのようですから、別の方であればお聞き流しください。
このほか、↓にも投稿しましたが、Findメソッドを使うなら、名前付き引数の省略はお勧めしないという立場ですが、引数そのものを省略しちゃうのはもっとお勧めしません。
[[20190130202008]] 『特定の単語の横のセルの値を取得して他のセルに入』(ひろ)
検索に失敗するとき(Findメソッドの引数省略時に起きる失敗) https://www.moug.net/tech/exvba/0150111.html
(もこな2) 2019/02/01(金) 00:43
(隠居じーさん) 2019/02/01(金) 07:11
Findメソッドで対象セルがあるか探す もし、対象セルがなければ、終了
対象セルがみつかったら、覚えておく
FindNextメソッドで対象セルがあるか探す(Do〜Loopとかでループ) もし、みつかったら覚えておいたセル群に追加する
覚えておいたセル群から1つずつ取り出して処理(For Each 〜Nextとかでループ) 区切り位置をつかって、セルの内容を右隣(以降)に出力する
私が思っている人だったら、趣味?の競馬をするために、自分で努力せず他人に無償労働させたいだけのように思えるので、参考にはならないかもですが・・
(もこな2) 2019/02/01(金) 09:31
あなた、"競馬の人"でもあるのですか?
だったら、mougの質問も閉じたほうがいいですね。
放置するのはよくないです。
(γ) 2019/02/01(金) 18:05
なら、なんで
>これでよろしいでしょうか
ってなるんですか?
デバッグは自分でやりましょうよ
(もこな2) 2019/02/01(金) 18:54
If Not myRange Is Nothing Then
Set firstCell = myRange
Do
Set myRange = Cells.FindNext(myRange)
Selection.TextToColumns Destination:=Range("myRange"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
:=")", FieldInfo:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True←実行時エラー 1004 'Range'メソッドは失敗しました:'_Global'オブジェクトとでます
(ひろ) 2019/02/01(金) 19:39
とりあえず2点確認。(返事をお待ちします)
(1)
Set myRange = Cells.Find(what:="サラ系") ↑これは【何を対象】に【どのようなこと】をしているか理解していますか?
(2)
If Not myRange Is Nothing Then ↑これは【何】を判定しているか理解できてますか
また、 参考にしたサイトでは、Do以降をどのようにしていたのか読み返してみましょう
※個人的には↓のサイトの方が説明がわかりやすいと思ったので紹介しておきます。 http://officetanaka.net/excel/vba/tips/tips123.htm
あど、【答えがないので】繰り返しになりますが、もしご自身が投稿したトピックで放置しているものがあれば、そちらもちゃんと対応しましょう。
(別人ならちゃんと言ったほうがよいです。どうしても質問が似ているので、同一人物じゃないかと思っちゃってます)
(もこな2) 2019/02/01(金) 21:34
とりあえず2点確認。(返事をお待ちします) (1)
Set myRange = Cells.Find(what:="サラ系") ↑これは【何を対象】に【どのようなこと】をしているか理解していますか?
サラ系という単語を検索してその結果をmyRangeという変数名に入れていると思います
(2)
If Not myRange Is Nothing Then ↑これは【何】を判定しているか理解できてますか
すいませんわかりません 良ければ教えていただけますか
遅くなりすいません
(ひろ) 2019/02/03(日) 19:48
なお、引数を省略するとなぜまずいのかは、↓をどうぞ。
検索に失敗するとき(Findメソッドの引数省略時に起きる失敗)(本トピックで2回目) https://www.moug.net/tech/exvba/0150111.html
(2)
さて、上記で「最初に見つかったものをオブジェクト型(Range型)の変数にセットしています」と言いました。
では、見つからなかった場合はどうなるかというと、Nothingがセットされます。
したがって、myRangeという変数にNothingがセットされているか否かをみて、該当するセルがあったのか無いのかを判定しています。
もし、(1)でみつからないのであれば、処理を続ける意味がないですし、逆に見つかっているのであれば、他に該当するものがないか(Do〜Loopなどで)探す必要がありますよね?
※個人的には↓のサイトの方が説明がわかりやすいと思ったので紹介しておきます。(本トピックで2回目) http://officetanaka.net/excel/vba/tips/tips123.htm
・・・というようなことは、ネット検索で調べると出てくるはずですから、マクロの記録で得られたコードや、誰かから提示を受けたコードで、分からない命令が出てきたら、ちゃんと消化されて(意味が分かって)から、ご自身のコードに組み込んだほうがよいと思いますし、そもそも自分でつくるつもりはなくて、完成品のコードだけほしいという場合は、質問サイトで丸投げするんじゃなくて、対価を払って作成してくれる人を探すほうがゴールに近そうです。
(もこな2) 2019/02/03(日) 21:12
(ひろ) 2019/02/03(日) 22:54
↓の問題点(留意点)も指摘したし・・
Set myRange = Cells.Find(what:="サラ系")
↓がなにやってるのかも説明したし
If Not myRange Is Nothing Then
↓も書いたし
他に該当するものがないか(Do〜Loopなどで)探す必要がありますよね?
なにより、↓で疑似コードチックなものを書きましたよね。
(もこな2) 2019/02/01(金) 09:31
コードクレクレ君じゃないと主張されるなら、適当にサイトや人の投稿からコピペだけするんじゃなくて、コードの意味を消化(意味を理解)する努力はされたほうがよいです。
そのようにすれば、質問も「〜〜であってますか?」という、試せばわかることを聞くんじゃなくて、「〜〜〜のように理解して〜〜〜したけど〜〜〜という結果になったので、××という結果が得られるように改善するにはどうしたらいいか?」っていう、実際にやってみたらどうだったのか、どのように上手くいかなかったのかを踏まえた質問におのずと変わるようにおもいますよ。
(もこな2) 2019/02/03(日) 23:25
(もこな2) 2019/02/04(月) 19:46
↑で出来たって仰ってるコードと質問をみるかぎり「Sheet1」の「A列」以外は検索する必要ないのでは?
さらに言えば、抜き出して書いていて、実コードはちゃんと鳴っているのかもしれないけど、Findメソッドの結果(返り値)はどうするんですか?
(もこな2) 2019/02/04(月) 20:06
嫌です。自分で過去ログ読んで考えて、調べて、試して、それでもわからないときに聞いてください。
(もこな2) 2019/02/04(月) 20:32
(ひろ) 2019/02/05(火) 19:51
に対する答えを、
>返り値がどう書いたらいいかイマイチわかりません
ではなくて
日本語でどういう処理をしたいのかで、説明してください。
マクロでどう書くかは考えなくて良いです。
(マナ) 2019/02/05(火) 20:22
わかりにくければすいません
(ひろ) 2019/02/05(火) 20:49
この部分を、もう少し詳細に説明してください。
どういう操作をするのですか。
(マナ) 2019/02/05(火) 20:58
(ひろ) 2019/02/05(火) 21:06
(マナ) 2019/02/05(火) 21:14
(マナ) 2019/02/05(火) 22:12
Dim myRange As Range
(ひろ) 2019/01/31(木) 22:35
Selection.TextToColumns Destination:=Range(myRange), DataType:=xlDelimited, _
^^^^^^^^^^^^^^
(ひろ) 2019/02/01(金) 19:39
Selection.TextToColumns Destination:=Range("myRange"), DataType:=xlDelimited, _
^^^^^^^^^^^^^^^^
(チオチモリン) 2019/02/05(火) 22:19
実際のA列のデータをいくつか例示お願いします。
2019年…以外のデータもです。
(マナ) 2019/02/05(火) 22:46
実際のデータを教えていただけませんか?
(マナ) 2019/02/05(火) 23:03
(ひろ) 2019/02/05(火) 23:10
どういうデータがあって、その中のどんなデータをどのように分割したいのか
を具体例をあげて説明してください。
(マナ) 2019/02/05(火) 23:27
そこからだったんですね。…
そうなると、セルを探すことより先に、データを分ける方法を理解するのが先決ですね。
私からのボールは、全然キャッチしてもらえないようですし、マナさんの邪魔になっても良くないので、外野に戻ります。
(もこな2) 2019/02/06(水) 19:38
(マナ) 2019/02/06(水) 21:07
(ひろ) 2019/02/06(水) 21:23
(マナ) 2019/02/06(水) 21:29
(ひろ) 2019/02/06(水) 21:34
では、2番めのパターンについて、説明お願いします。
分割のルールを決めるためです。
>サラ系3歳[指]( 馬齢 ) ダート左1300m (
サラ系 の部分は、他にはどんな場合がありますか。
3歳の部分、[指]の部分、( 馬齢 )の部分、 ダート左1300m ( の部分についても同じです。
わたしは、競馬のことは、全くわかりません。
その前提で、説明お願いします。
(マナ) 2019/02/06(水) 21:51
ダート左1300m ( ここが複雑で
ダート左
ダート右
芝左
芝右
それに距離 1000m〜4500m
です
(ひろ) 2019/02/06(水) 22:13
>(混)(特指)
ここの括弧は、
(混)[特指]
ということはないですね。
(マナ) 2019/02/06(水) 22:32
2019年2月2日 東京 3日目
6R 3歳新馬
(マナ) 2019/02/06(水) 22:56
'------
おそらく、こんな手順できます。
まずは手作業で確認してみてください。
1)A列で置換を以下の条件で9回実行(_は半角スペース)
検索する文字列 置換後の文字列
年 年_
サラ系 サラ系_
(混)[指] _(混)[指]_
(混)(特指) _(混)(特指)_
(国際)[指] _(国際)[指]_
[指] _[指]_
)_[指] )[指]
ダート _ダート
芝 _芝
2)A列で「区切り位置」実行(区切り文字はスペース)
おそらく、ひろさんにとって、これが一番簡単な方法です。
何をしているか理解できますよね。
上手くいかないなら、何が問題か説明してください。
この手順でできたなら、これをマクロにします。(明日以降です)
(マナ) 2019/02/06(水) 23:43
2019年2月2日 東京 3日目 は 2019年2月2日は日付なので 1月1日〜12月31日まであります 東京は 小倉 阪神 京都 中京 中山 東京 新潟 福島 函館 札幌 です 3日目は 1日目〜15日目まであります
引き続いて
6R 3歳新馬
6Rは1R〜12R まで
3歳新馬は これが複雑で3歳新馬 3歳未勝利 3歳500万下 2歳新馬 2歳未勝利
4歳上500万下 4歳上1000万下 4歳上1600万下
その他にも特別レースといって
ゆりかもめ賞(500万下) みたいなひらがな・カタカナ・漢字・英語のついたレース名があります 複雑ですがよろしくおねがいします
6R 3歳新馬
(ひろ) 2019/02/07(木) 18:17
この中で、分割が必要なのは、ゆりかもめ賞 と (500万下) だけでしょうか。
(マナ) 2019/02/07(木) 19:23
(ひろ) 2019/02/07(木) 19:33
>ゆりかもめ賞(500万下)
(マナ) 2019/02/07(木) 20:04
そうです。では、どのように置換するとよいですか。
検索する文字列:
置換後の文字列:
考えてみてください。
(マナ) 2019/02/07(木) 20:25
(ひろ) 2019/02/07(木) 20:34
(混)(特指)
(マナ) 2019/02/07(木) 20:43
(マナ) 2019/02/07(木) 20:53
検索する文字列 置換後の文字列
年 年_
サラ系 サラ系_
( _(
[指] _[指]_
)_[指] )[指]
)_( )(
ダート _ダート
芝 _芝
(マナ) 2019/02/07(木) 21:11
検索する文字列 置換後の文字列
年 年_
サラ系 サラ系_
( _(
[指] _[指]_
)_[指] )[指]
)_(特指 )(特指
ダート _ダート
芝 _芝
(マナ) 2019/02/07(木) 21:41
(マナ) 2019/02/07(木) 22:30
Sub Macro1()
'
' Macro1 Macro
'
'
Cells.Replace What:="年", Replacement:="年 ", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Cells.Replace What:="サラ系", Replacement:="サラ系 ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Replace What:="(", Replacement:=" (", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Cells.Replace What:="[指]", Replacement:=" [指] ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Replace What:=") [指]", Replacement:=")[指]", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Replace What:=") (特指", Replacement:=")(特指", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Replace What:="ダート", Replacement:=" ダート", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Replace What:="芝", Replacement:=" 芝", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Selection.TextToColumns Destination:=Range("A148"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1)), TrailingMinusNumbers:=True
End Sub
です
(ひろ) 2019/02/07(木) 22:51
で、次に、記録されたマクロを実行してみて
期待通り分割されることを確認してください。
(マナ) 2019/02/08(金) 20:33
1)A列全体を選択
2)置換
3)区切り位置
の順番です。
(マナ) 2019/02/08(金) 20:54
Sub Macro2()
'
' Macro2 Macro
'
'
Columns("A:A").Select
Selection.Replace What:="年", Replacement:="年 ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="サラ系", Replacement:="サラ系 ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="(", Replacement:=" (", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="[指]", Replacement:=" [指] ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:=") [指]", Replacement:=")[指]", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:=") (特指", Replacement:=")(特指", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="ダート", Replacement:=" ダート", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="芝", Replacement:=" 芝", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
End Sub
となりましたが 1つ問題が発生しました
それは列全体を選択して区切ると他のデータが消えてしまいました
(ひろ) 2019/02/08(金) 21:33
どんなデータが消えたのでしょうか。
具体的に説明してください。
(マナ) 2019/02/08(金) 22:10
具体的にお願いします。
A 1 2019年2月3日 東京 4日目 2 3 4 5 6 7 8
(マナ) 2019/02/08(金) 22:30
こうなるのでしょうか?
-A- -B- -C- -D- -E- -F- -G- 2 着 枠 馬 馬名 性齢 負担 騎手 ↓ -A- -B- -C- -D- -E- -F- -G- 2 着
(マナ) 2019/02/10(日) 20:57
(マナ) 2019/02/10(日) 21:11
1)A列全体を選択
2)置換
3)B〜G列を選択
4)列挿入
5)A列を選択して、区切り位置
6)B〜G列を選択
7)条件を選択してジャンプ:白セル
8)セルの削除:左方向にシフト
(マナ) 2019/02/10(日) 21:31
A列に結合セルはありますか
列挿入しなかったときは、そのメッセージはでなかったのですか?
(マナ) 2019/02/10(日) 23:02
そうではなくて、金曜日の時点では、
結合セル…のメッセージは出なかったのですか?
(マナ) 2019/02/10(日) 23:13
1)A列全体を選択
2)結合セルを解除(セルの書式設定)
3)置換
4)B〜G列を選択
5)列挿入
6)A列を選択して、区切り位置
7)B〜G列を選択
8)条件を選択してジャンプ:白セル
9)セルの削除:左方向にシフト
(マナ) 2019/02/10(日) 23:20
空白セルの間違いです
(マナ) 2019/02/10(日) 23:22
Sub Macro4()
'
' Macro4 Macro
'
'
Columns("A:A").Select
Range("A56").Activate
Selection.UnMerge
Columns("A:A").Select
Range("A56").Activate
Selection.Replace What:="年", Replacement:="年 ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="サラ系", Replacement:="サラ系 ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="(", Replacement:=" (", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="[指]", Replacement:=" [指] ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:=") [指]", Replacement:=")[指]", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:=") (", Replacement:=")(", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Columns("A:A").Select
Range("A57").Activate
Selection.Replace What:="ダート", Replacement:=" ダート", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="芝", Replacement:=" 芝", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Columns("B:G").Select
Range("B56").Activate
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Columns("A:A").Select
Range("A56").Activate
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
Columns("B:G").Select
Range("B56").Activate
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.Delete Shift:=xlToLeft
問題はありませんでした
(ひろ) 2019/02/11(月) 21:31
(マナ) 2019/02/11(月) 22:04
(マナ) 2019/02/11(月) 22:53
(マナ) 2019/02/11(月) 23:10
(γ) 2019/02/11(月) 23:47
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
のところで
データが選択されてませんとでます
テストは良かったのに
(ひろ) 2019/02/17(日) 22:58
それと、mougの件はどうするつもりでしょうか。
他の回答者のコメントに対してもそうですが
無視しないようにお願いします。
(マナ) 2019/02/18(月) 19:22
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.