[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『変則的な別シート間のデータの参照』(まつ)
シート1の内容を シート2に反映させたいのですが 変則的な並びになっていて
上手く反映させられません
シート1
A B C
1● ○ △
2☆
3★ □
・
・
シート2
A B C
1●
2○
3△
4☆
5★
6□
シート1の ABC列に入力されているデータを
シート2の A1 A2 A3・・・と縦に順番に反映されるようにしたいのです
空欄は無視して データのあるセルの内容だけを詰めて表示したいのですが
やり方がわかりません。
どなたかご教授お願いします。
WindowsXP、エクセル2003使用です
データ範囲は 何行・何列ぐらいありますか?
作業用列または行を使用することは可能ですか?
シート1の作業列(Z列) Z1:=IF(COUNTA(A1:X1),1,"") Z2:=IF(COUNTA(A2:X2),COUNTA($A$1:X1)+1,"") 下へコピー シート2 A1:=IF(COUNTA(Sheet1!$A$1:$X$100)<ROW(A1),"",INDEX(INDEX(Sheet1!$A$1:$A$100,MATCH(ROW(A1),Sheet1!$Z$1:$Z$100,1)):INDEX(Sheet1!$Y$1:$Y$100,MATCH(ROW(A1),Sheet1!$Z$1:$Z$100,1)),(ROW(A1)-INDEX(Sheet1!$Z$1:$Z$100,MATCH(ROW(A1),Sheet1!$Z$1:$Z$100,1))+1))) 下へコピー (NB)
マクロ案です。
Sub sample()
Dim a, tbl Dim i As Long, ii As Long, j As Long
tbl = Sheets(1).Range("A1").CurrentRegion ReDim a(1 To UBound(tbl, 1) + UBound(tbl, 2), 1 To 1) For i = 1 To UBound(tbl, 1) For ii = 1 To UBound(tbl, 2) If Not tbl(i, ii) = Empty Then j = j + 1: a(j, 1) = tbl(i, ii) End If Next ii Next i Sheets(2).Range("A1").Resize(UBound(tbl, 1) + UBound(tbl, 2), 1) = a End Sub (Jera)
わざわざありがとうございます
まだまだ初心者で マクロがわかりません・・・
NBさん
ありがとうございます
やはり私には難度が高そうです・・・
頂いた式を参考に勉強しながら試してみます
作業用列を作ることは問題ありません
(まつ)
こちらもご参考に。 [[20110212114229]] 『横のデータを縦に変換したいのですが。』(excel猛勉強中)
(HANA)
少し補足します
もう少し具体的にいうと こんな感じの表なんです
ひとつの注文番号に対して、商品が最大4つまであります。
シート2のABC列に入力する数式が分かりません
まだNBさんの数式の意味が分かっていない段階ですが、そのまま当てはめていって問題はありませんか?
何度もすみません
シート1
A B C D E F 1 番号 注文者 商品1 商品2 商品3 商品4 2 100 田中 ● ○ △ 3 101 山田 ☆ 4 102 佐藤 ★ □ 5 ・ ・
シート2
A B C 1 番号 注文者 商品 2 100 田中 ● 3 100 田中 ○ 4 100 田中 △ 5 101 山田 ☆ 6 102 佐藤 ★ 7 102 佐藤 □ ・ ・ ・ ・ ・ ・ 1000
(まつ)
hanaさん
まさにこれです!
いまからよく読んでみます
ありがとうございます
(まつ)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.