[[20171009164522]] 『一気に処理する仕方』(lion) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『一気に処理する仕方』(lion)

いつもお世話になっております。ご教授ください。

Sheet1 のA2:A5それぞれに・(全角)で区切られた単語が入っているとします。例えば以下のようなものです。

り・ん・ご
け・い・た・い
ほ・ん
ちょ・こ・れ・−・と

これをそれぞれB2からのセルにばらして格納したいと思います。つまりこういうことです。

り・ん・ご  り  ん  ご

という表示になります。これをまとめて一気に処理するコードをご教示くださいませんでしょうか。

< 使用 Excel:Excel2016mac、使用 OS:MacOSX >


「データ」タブの「区切り位置」でできます。
まずは、手操作で確認してみてください。
そのあとで、「マクロの記録」です。

(マナ) 2017/10/09(月) 17:16


マナ様

ありがとうございます。ネットで検索しますと,配列,splitといったものを使用するのではないかと察します。マクロの記録で行ったのですが,そういったものは見当たらず(arrayはありましたが...),得られたコードを私が編集して作成するのは至難の業ですので,どなたかご協力をいただけましたら幸いに存じます。
(lion) 2017/10/09(月) 17:43


Mac版には、ないのでしょうか?
>「データ」タブの「区切り位置」でできます。

https://www.becoolusers.com/excel/text-to-columns.html

手作業でも1分もかかりません。

(マナ) 2017/10/09(月) 17:47


マナ様

申し訳ございません。サイトのように試したのですが,以下のようなものしか出て参りません。

繰り返しになりますが,私にはここからの変更が難しく,どなたかお知恵を貸していただけませんか。

Selection.TextToColumns Destination:=Range("B2"), 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), Array(3, 1))

(lion) 2017/10/09(月) 19:29


 私がやると、こんなのが出来上がりました。

 Sub Macro1()
     Columns("A:A").Select ’A列をB列にコピーする
     Selection.Copy
     Columns("B:B").Select
     ActiveSheet.Paste
     Application.CutCopyMode = False
     Selection.TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _
         TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
         Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
         :="・", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, _
         1)), TrailingMinusNumbers:=True
 End Sub

 ・・で、それを整理すると、こんなのになります。

 Sub Macro2()
     Columns("A:A").Copy Range("B1")

     Columns("B:B").TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _
          Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar:="・"
 End Sub

(半平太) 2017/10/09(月) 19:46


半平太様,コードをありがとうございました。

勉強のために,どなたかぜひご教授いただきたいのですが,配列でコードを書くことは可能でしょうか。

(lion) 2017/10/09(月) 22:51


 >勉強のために

 Sub test()
     Dim a, i As Long, ii As Long, x
     With Cells(1).CurrentRegion.Columns(1)
         a = .Value
         For i = 1 To UBound(a, 1)
             If a(i, 1) <> "" Then
                 x = Split(a(i, 1), "・")
                 If UBound(a, 2) < UBound(x) + 1 Then
                     ReDim Preserve a(1 To UBound(a, 1), 1 To UBound(x) + 1)
                 End If
                 For ii = 0 To UBound(x)
                     a(i, ii + 1) = x(ii)
                 Next
             End If
         Next
         .Columns(2).Resize(, UBound(a, 2)).Value = a
     End With
 End Sub
(seiya) 2017/10/09(月) 23:33

seiya様

お礼が遅くなりまして申し訳ございません。

動作確認できました。これから一行ごとにその内容を確認させていただきます。

ありがとうございました。
(lion) 2017/10/10(火) 11:51


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.