みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

マクロについて

初めて投稿します。

最近、マクロを初めて全くの初心者です。
一応わからない事はネットで検索してたりしていますが
自分が求めているようなプログラミングは可能かどうか皆にお尋ねします。

リストにこういったものが記載されています。

地産    品物  数量 
鹿児島   鶏v    1
東京     鶏v2     3
北海道   鶏b    7

これを下の図にマクロで自動的に作成させるようにしたいです。
地産    品物  種類  数量 
鹿児島   鶏    v    1
東京     鶏   v2     3
北海道   鶏    b    7

種類によってv、v2、bとあるように文字数が違ってきてそれを抽出する為に
条件を用いてプログラミングすることは可能でしょうか?
関数などで抽出は一応出来ますが、この他にも作業を含んでおり
1から最後までマクロで完了させたいと思っております。

急ぎではありませんので、宜しくお願い致します。

投稿日時 - 2010-02-18 17:01:45

QNo.5687093

暇なときに回答ください

質問者が選んだベストアンサー

これでよい?
リストがSheet1にあるとして
Sheet2へ作成します

Sub test()
Dim i As Long
Dim WS1 As Worksheet
Set WS1 = Worksheets("sheet1")
For i = 2 To WS1.Cells(Rows.Count, 1).End(xlUp).Row
With Worksheets("sheet2").Cells(Rows.Count, 1).End(xlUp).Offset(1)
.Value = WS1.Cells(i, 1).Value
.Offset(, 1).Value = Left(WS1.Cells(i, 2).Value, 1)
.Offset(, 2).Value = Right(WS1.Cells(i, 2).Value, Len(WS1.Cells(i, 2).Value) - 1)
.Offset(, 3).Value = WS1.Cells(i, 3).Value
End With
Next
End Sub

投稿日時 - 2010-02-18 19:36:19

補足

やってみましたらうまくいきました。
品質の文字数が多くても問題ありませんでした。
どうして分離が出来るのか詳しく教えて頂けませんでしょうか?

投稿日時 - 2010-02-23 10:24:38

お礼

上の回答との組み合わせで自分の思っていたものが出来そうです。
参考にさせていただきたいと思います。
回答有難うございました。

投稿日時 - 2010-02-23 10:05:01

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

どんな条件か解りませんが、分離に関して作成してみました。

Sub test()

Dim i As Integer
Dim x As Integer
Dim sStr As String
Dim sStr1 As String
Dim sStr2 As String
Dim Ary As Variant

Ary = Array("鶏", "牛", "河童")
'MsgBox Ary(0)

For i = 1 To 5
sStr = Cells(i, 1)
x = 0
Do While x <= UBound(Ary)
sStr1 = Ary(x)
If InStr(sStr, sStr1) = 1 Then
Exit Do
End If
x = x + 1
Loop

sStr2 = Right(sStr, Len(sStr) - Len(sStr1))

Cells(i, 2) = sStr1
Cells(i, 3) = sStr2

Next

End Sub

投稿日時 - 2010-02-18 19:56:25

補足

やってみましたのですが、何故か品物の一覧が河童で埋め尽くされてしまいました。
私の方法が間違ってましたでしょうか?

投稿日時 - 2010-02-23 10:22:36

お礼

返信が遅くなり申し訳ありませんでした。
回答有難うございます。
参考にさせていただきたいと思います。

投稿日時 - 2010-02-23 10:01:46

あなたにオススメの質問