[[20110519115618]] 『変則的な別シート間のデータの参照』(まつ) ページの最後に飛ぶ

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

 

『変則的な別シート間のデータの参照』(まつ)

シート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)

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.