Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7623 / 13646 ツリー ←次へ | 前へ→

【37892】配列の要素数だけ右に書き込む [名前なし] 06/5/22(月) 20:13 質問[未読]
【37893】Re:配列の要素数だけ右に書き込む ichinose 06/5/22(月) 20:38 発言[未読]
【37901】Re:配列の要素数だけ右に書き込む [名前なし] 06/5/22(月) 22:10 お礼[未読]
【37902】Re:配列の要素数だけ右に書き込む ichinose 06/5/22(月) 22:35 発言[未読]
【37903】Re:配列の要素数だけ右に書き込む [名前なし] 06/5/22(月) 22:57 お礼[未読]
【37904】Re:配列の要素数だけ右に書き込む Kein 06/5/22(月) 23:14 発言[未読]
【37909】Re:配列の要素数だけ右に書き込む (報告) 06/5/23(火) 1:05 発言[未読]

【37892】配列の要素数だけ右に書き込む
質問  [名前なし]  - 06/5/22(月) 20:13 -

引用なし
パスワード
   C列のセルを上から空白セルになるまで"+"で区切った文字列を
右セルに書き込むようにしたいのですが
下記だと指定セルしか出来ない為
C列の空白セルまでというのを教えてくださいお願いします。


  Dim AAA As Variant

  With Sheets("Sheet1")
    ' +で区切ったものを配列に格納
    AAA = Split(Range("C1").Value,"+")
    '配列の要素数だけセルD1から右へ書き込む
    Range("D1").Resize(1, UBound(AAA) + 1).Value = AAA
  End With

【37893】Re:配列の要素数だけ右に書き込む
発言  ichinose  - 06/5/22(月) 20:38 -

引用なし
パスワード
   ▼[名前なし] さん:
こんばんは。

>C列のセルを上から空白セルになるまで"+"で区切った文字列を
>右セルに書き込むようにしたいのですが
>下記だと指定セルしか出来ない為
>C列の空白セルまでというのを教えてくださいお願いします。

「ツール」----「区切り位置」とクリックすると
「区切り位置ウィザード」の操作をマクロの記録で作成したコードを
ちょっと編集して、

Sub Macro2()
  With Range("c1", Cells(Rows.Count, 3).End(xlUp))
    .TextToColumns Destination:=Range("D1"), _
      DataType:=xlDelimited, _
      TextQualifier:=xlDoubleQuote, _
      ConsecutiveDelimiter:=False, _
      Other:=True, OtherChar:="+"
    End With
End Sub


これを使って見て下さい
 

【37901】Re:配列の要素数だけ右に書き込む
お礼  [名前なし]  - 06/5/22(月) 22:10 -

引用なし
パスワード
   まずはありがとうございます。
できませんでした。

▼ichinose さん:
>▼[名前なし] さん:
>こんばんは。
>
>>C列のセルを上から空白セルになるまで"+"で区切った文字列を
>>右セルに書き込むようにしたいのですが
>>下記だと指定セルしか出来ない為
>>C列の空白セルまでというのを教えてくださいお願いします。
>
>「ツール」----「区切り位置」とクリックすると
>「区切り位置ウィザード」の操作をマクロの記録で作成したコードを
>ちょっと編集して、
>
>Sub Macro2()
>  With Range("c1", Cells(Rows.Count, 3).End(xlUp))
>    .TextToColumns Destination:=Range("D1"), _
>      DataType:=xlDelimited, _
>      TextQualifier:=xlDoubleQuote, _
>      ConsecutiveDelimiter:=False, _
>      Other:=True, OtherChar:="+"
>    End With
>End Sub
>
>
>これを使って見て下さい
>

【37902】Re:配列の要素数だけ右に書き込む
発言  ichinose  - 06/5/22(月) 22:35 -

引用なし
パスワード
   ▼[名前なし] さん:


>まずはありがとうございます。
>できませんでした。
こんな投稿で済ませてはいけません・・・。
これでは、このような掲示板の存在意義が半減してしまいます。

C列に以下のようなデータが入っています。
xxxx
xxxx
xxxx
xxxx

このデータに対して、提示されたマクロを実行したところ、
「+」でデータが分けられた結果がD列以降に表示されず、
xxxxxxxxx
という結果にしかなりませんでした。

入力データに対して、出力が何だったのか明確に記述して下さい。


改めて、今度は新規ブックの標準モジュールに

'============================================================
Sub Macro2()
  Call mk_sample
  With Range("c1", Cells(Rows.Count, 3).End(xlUp))
    .TextToColumns Destination:=Range("D1"), _
      DataType:=xlDelimited, _
      TextQualifier:=xlDoubleQuote, _
      ConsecutiveDelimiter:=False, _
      Other:=True, OtherChar:="+"
    End With
End Sub
'==================================================================
Sub mk_sample()
  Dim idx As Long, jdx As Long
  For idx = 1 To 20
    ReDim myarray(1 To Int(Rnd() * 8) + 2)
    For jdx = LBound(myarray()) To UBound(myarray())
     myarray(jdx) = Chr(Int(Rnd() * 26) + 65)
     Next jdx
    Cells(idx, 3).Value = Join(myarray(), "+")
    Next idx
  Erase myarray()
End Sub

今度は、簡単なサンプルデータもVBAで作成しています。
C列のデータを「+」で分けてD列以降に表示します。

再度確認してみて下さい。

これがうまくいくようでしたら、最初の試行がうまくいかない理由を
考えてみて下さい。

【37903】Re:配列の要素数だけ右に書き込む
お礼  [名前なし]  - 06/5/22(月) 22:57 -

引用なし
パスワード
   ありがとうございました。
下記内容で満足できました。
ご指導ありがとうございました。

  Dim AAA As Variant
  Dim i As Long
  For i = 2 To 50


  With Sheets("Sheet1")
    ' ・で区切ったものを配列に格納
    AAA = Split(Range("C" & i).Value, "#")
    '配列の要素数だけセルB1から右へ書き込む
    Range("D" & i).Resize(1, UBound(AAA) + 1).Value = AAA
  End With
Next i


▼ichinose さん:
>▼[名前なし] さん:
>
>
>>まずはありがとうございます。
>>できませんでした。
>こんな投稿で済ませてはいけません・・・。
>これでは、このような掲示板の存在意義が半減してしまいます。
>
>C列に以下のようなデータが入っています。
>xxxx
>xxxx
>xxxx
>xxxx
>
>このデータに対して、提示されたマクロを実行したところ、
>「+」でデータが分けられた結果がD列以降に表示されず、
>xxxxxxxxx
>という結果にしかなりませんでした。
>
>入力データに対して、出力が何だったのか明確に記述して下さい。
>
>
>改めて、今度は新規ブックの標準モジュールに
>
>'============================================================
>Sub Macro2()
>  Call mk_sample
>  With Range("c1", Cells(Rows.Count, 3).End(xlUp))
>    .TextToColumns Destination:=Range("D1"), _
>      DataType:=xlDelimited, _
>      TextQualifier:=xlDoubleQuote, _
>      ConsecutiveDelimiter:=False, _
>      Other:=True, OtherChar:="+"
>    End With
>End Sub
>'==================================================================
>Sub mk_sample()
>  Dim idx As Long, jdx As Long
>  For idx = 1 To 20
>    ReDim myarray(1 To Int(Rnd() * 8) + 2)
>    For jdx = LBound(myarray()) To UBound(myarray())
>     myarray(jdx) = Chr(Int(Rnd() * 26) + 65)
>     Next jdx
>    Cells(idx, 3).Value = Join(myarray(), "+")
>    Next idx
>  Erase myarray()
>End Sub
>
>今度は、簡単なサンプルデータもVBAで作成しています。
>C列のデータを「+」で分けてD列以降に表示します。
>
>再度確認してみて下さい。
>
>これがうまくいくようでしたら、最初の試行がうまくいかない理由を
>考えてみて下さい。

【37904】Re:配列の要素数だけ右に書き込む
発言  Kein  - 06/5/22(月) 23:14 -

引用なし
パスワード
   ちょっと一言。
>下記内容で満足できました。
サンプルコードを試すことが出来る回答でなかったら、こんなレスでは
到底収まらないはずでしょ ? icinoseさんは、満足できたかどうか
なんて聞いてるんじゃないよ。せめて聞かれたことにちゃんと答えなよ !!

【37909】Re:配列の要素数だけ右に書き込む
発言  (報告)  - 06/5/23(火) 1:05 -

引用なし
パスワード
   http://www2.moug.net/bbs/exvba/20060522000036.htm

モーグではマルチポストは禁止。

7623 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free