
下記のようなデータ(列数も行数も常に変わり、固定ではない)を
┌─────────────────
│ A 列 | B列 | C列 | D列
├───────────────────
│ 1 │伝票01 │品名01 | 品名02 │品名03
├───────────────────
| 2 │0011 │みかん │みかん | りんご
├───────────────────
│ 3 │1001 │りんご │いちご |
├───────────────────
│ 4 │1100 │いちご │みかん | ぶどう
└───────────────────
↓のように2列にまとめる方法はございますでしょうか?VBAを希望しております。
よろしくお願い申し上げます。
┌─────────────────
│ A │ B
├─────────────────
│ 1 │伝票 │品名
├─────────────────
│ 2 │0011_品名01 │みかん
├─────────────────
│ 3 │1001_品名01 │りんご
├─────────────────
│ 4 │1100_品名01 │いちご
├─────────────────
│ 5 │1001_品名02 │みかん
├─────────────────
│ 6 │1100_品名02 │いちご
├─────────────────
│ 7 │1001_品名02 │みかん
├─────────────────
│ 8 │1100_品名03 │りんご
├─────────────────
│ 9 │1001_品名03 │
├─────────────────
│ 0 │1001_品名03 │ぶどう
├─────────────────
No.2ベストアンサー
- 回答日時:
作成例:
sub macro1()
dim h as range
dim Target as range
dim n as long
dim w as worksheet
’準備
set w = activesheet
set target = w.range("A1").currentregion.offset(1,1)
worksheets.add after:=activesheet
range("A1:B1") = array("伝票","品目")
n = 1
’転記
for each h in target
if h <> "" then
n = n + 1
cells(n, "A") = w.cells(h.row,1).text & "," & w.cells(1, h.column).value
cells(n, "B") = h.value
end if
next
end sub
keithin 様
下手な質問文だったと思いますが、お察しいただき恐縮です。
おかげさまで、やりたいことができました。
また早々のご回答をいただき大変助かりました、誠にありがとうございました。
No.3
- 回答日時:
>2列にまとめる方法はございますでしょうか?VBAを希望しております。
⇒期待値として5行目以降の平仄が合っていないのではないでしょうか。
VBAの知識がないのであれば丸投げ質問は、回答後に変更が発生したら対応が
とれないので、VBAを学習してから質問した方が良いと思う。
因みに2列の統合ですが以下の様な構成もありと思いますが如何でしょうか。
伝票1_品名1/品名1
伝票1_品名2/品名2
伝票1_品名3/品名3
伝票2_品名1/品名1
伝票2_品名2/品名2
~
(空白は対象外)
伝票n_品名m/品名m
コード例ですが、2つのループ処理でデータの転記が可能です。
For 行 = 2 To 列最終行
For 列 = 2 To 行最終列
データ転記
NEXT 列
Next 行
mu2011 様
ご指摘ありがとうございます。
自分ができる範囲で作ったコードを載せた方が良かったですね!すみません。
また、ご提案もありがとうございます、参考にさせていただきます。
No.1
- 回答日時:
品名の数が各行で一定数なら、エクセル関数の組み合わせで、できると思う。
しかし不定個数のようだから、関数では複雑になる。質問者は何処まで勉強して考えてやってみたのか。
ーー
VBAでやれば素直な問題なので、書いておく。
こういう風に、データの組み換えなどしたくなったら、VBAは必須だというのが私の持論。
例データ A1:D4
伝票01品名01品名02品名03
0011みかんみかんりんご
1001りんごいちご
1100いちごみかんぶどう
(注)質問に丁寧に縦棒横棒で書いているが、こういう書き方(シートのセル範囲のコピペ)で、質問者に判るのでは
結果
J2:K9
0011品名01みかん
0011品名02みかん
0011品名03りんご
1001品名01りんご
1001品名02いちご
1100品名01いちご
1100品名02みかん
1100品名03ぶどう
ーー
コードは
標準モジュールに
Sub test01()
d = Range("A65536").End(xlUp).Row
k = 2
For i = 2 To d
r = Cells(i, "I").End(xlToLeft).Column
For j = 2 To r
Cells(k, 10) = Cells(i, "A") & Cells(1, j)
Cells(k, 11) = Cells(i, j)
k = k + 1
Next j
Next i
End Sub
(注意)
同じシートのJ列から結果を出している。従って元データはI列までと仮定。そうでない場合1部手直しが必要。
他シートに結果を出すのは一部手直しが必要。
(VBAの回等が、質問者の意に沿うかどうか判らないので手抜き。)
imogashi様
for~next のネストはまだまだ組み立てるのが苦手なので大変勉強になりました。
丁寧なご回答いただき、ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スーパーで買った1つ300円の梨...
-
7文字以上のフルーツをできるだ...
-
煮物こんにゃくの冷凍保存について
-
ラズベリーの種の抜き方を教え...
-
「であり」と「であって」の使...
-
4歳の子供がさくらんぼを種ご...
-
何という名前の虫か教えてください
-
海の幸山の幸
-
道路側に木から赤い果物ような...
-
10年前のにんにく漬け、食べて...
-
EXCELでB1に指定文字が入った場...
-
【ぶどう】 友人からデラウェア...
-
こんなスイカは食べても大丈夫...
-
すいかは発酵しても食べられるか。
-
ライム(果物)を漢字になおす...
-
今白いちじくを食べようとして2...
-
果実酒を長期熟成させると・・
-
パイナップルにたかる虫
-
とうもろこし 粒の根元がオレ...
-
土地を買おうと思っています 目...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
煮物こんにゃくの冷凍保存について
-
7文字以上のフルーツをできるだ...
-
Excel MATCH関数で検索範囲内...
-
スーパーで買った1つ300円の梨...
-
スポンジケーキってどのくらい...
-
「であり」と「であって」の使...
-
さくらんぼに似ているが、さく...
-
中黒「・」か読点「、」か?
-
ラズベリーの種の抜き方を教え...
-
いちごを1パック買ったのです...
-
10年前のにんにく漬け、食べて...
-
ライム(果物)を漢字になおす...
-
北海道では、見かけないもの
-
EXCELでB1に指定文字が入った場...
-
4歳の子供がさくらんぼを種ご...
-
教えてください!!
-
ローリエって何のために入れる...
-
梶井基次郎の檸檬
-
エクセルで数字を入力したら文...
-
何という名前の虫か教えてください
おすすめ情報