プロが教える店舗&オフィスのセキュリティ対策術

エクセルで例えば
NO、店、商品・・・
1「Aスーパ」「リンゴ」「バナナ」「ミカン」
2「Bコンビニ」「ナシ」「モモ」
3「C百貨店」「クリ」「ブドウ」
のように各セルに文字列が入っているものを
下記のように、「店」と「商品」がそれぞれ対応するように
一列に並べるにはどのようにしたらよいでしょうか?
1「Aスーパ」「リンゴ」
2「Aスーパ」「バナナ」
・・・
8「C百貨店」「ブドウ」

条件としては、
一つの行に店は1つだけ
ただし、商品の数はばらばら
です。

A 回答 (3件)

◆Sheet2の式


A1=IF(ROW(A1)>COUNTA(Sheet1!$B$1:$F$3),"",INDEX(Sheet1!A:F,SMALL(INDEX(SUBSTITUTE((Sheet1!$B$1:$F$3<>"")*1,0,10^3)*ROW($B$1:$F$3),),ROW(A1)),1))
★下にコピー

B1=IF(ROW(A1)>COUNTA(Sheet1!$B$1:$F$3),"",INDEX(Sheet1!B:F,SMALL(INDEX(SUBSTITUTE((Sheet1!$B$1:$F$3<>"")*1,0,10^3)*ROW($B$1:$F$3),),ROW(A1)),COUNTIF($A$1:A1,A1)))
★下にコピー
    • good
    • 0
この回答へのお礼

お礼が遅くなり申し訳ございませんでした。
ありがとうございます。
関数しか使えないので関数でいろいろ頑張ってみたのですが
できませんでした。
大変助かりました。

お礼日時:2008/10/07 12:34

#2です。

作業列を使う方法を挙げておきます。
これでも複雑ですが、作業列を使わない方法に比べて、どうでしょうか。
今の行番号を元に、持って来る元データ範囲(下記ではA1:E6)の中で、何行数、何列数かを計算している方法です。
例データ(A列は店、B-E列は品物、品物数限度4個の例)
A列  B列  C列  D列  E列
acx
defgg
hij
kl
mnopq
rst
ーーー
F列 F1は0、F2に式 =COUNTA($B$1:E1)+1 と入れて下方向に
式を複写
結果
0
3
7
9
10
14
G列に =MATCH(ROW(),$F$1:$F$100,1) と入れて式を下方向に複写
結果
1
1
2
2
2
2
3
3
4
5
5
5
5
6
6
ーー
I列I1に =INDEX($A$1:$E$100,MATCH(ROW(),$F$1:$F$100,1),1)
J列J1に =INDEX($A$1:$E$100,MATCH(ROW(),$F$1:$F$100,1),COUNTIF($G$1:G1,G1)+1)
それぞれ下方向に式を品物数行だけ複写
結果
I列  J列
ac
ax
de
df
dg
dg
hi
hj
kl
mn
mo
mp
mq
rs
rt
    • good
    • 0

質問者には無縁かもしれないが、こういう手の問題(表の組み換え)はVBAでやると考えやすい。

単純な規則性があるから。
(式でやると既出ご回答のように初心者には理解も難しい式になる。)
参考に。
ーー
例データ
質問の通り
コード
標準モジュールに
Sub test01()
d = Worksheets("Sheet1").Range("A65536").End(xlUp).Row
k = 1
For i = 1 To d
For j = 2 To Worksheets("Sheet1").Cells(i, "IV").End(xlToLeft).Column
Worksheets("Sheet2").Cells(k, 1) = Worksheets("Sheet1").Cells(i, 1)
Worksheets("Sheet2").Cells(k, 2) = Worksheets("Sheet1").Cells(i, j)
k = k + 1
Next j
Next i
End Sub
ーー
結果
Sheet2
A列  B列
Aスーパリンゴ
Aスーパバナナ
Aスーパミカン
Bコンビニナシ
Bコンビニモモ
C百貨店クリ
C百貨店ブドウ
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!