- ベストアンサー
A列(10行)とB列(10行)の全ての組み合わせをC列にリストアップしたい。
何度もすみません。 前回の質問で文字列の組み合わせの方法は理解いたしました! 本当にありがとうございます。 追加で質問になるのですが、タイトルにあるように(※数字は仮です) A列(10行)とB列(10行)の全ての組み合わせをC列にすべて(100行?)リストアップしたいと考えています。 また並び方は A1 A2 A3 ・ ・ ・ B1 B2 ・ ・ というようにしたいです。 このようにするには C列にどのような関数を入れればいいのでしょうか? どうかよろしくお願いいたします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
#3,#4です C1セルに =IF(COUNTA(A:A)*COUNTA(B:B)<ROW(),"", INDEX(A:A,(ROW()-1)/COUNTA(B:B)+1)&" " &INDEX(B:B,MOD(ROW()-1,COUNTA(B:B))+1)) で良かったです。余計なものを足してました。 添付図、薄い緑は手入力です。水色には数式が入っています D、E列のような数値が求められれば、(INDEX関数を使って)結果が出せるのはわかるでしょうか? 以下、その数値を求める方法です。 素材として連番があります。 F列は、行番号です。F1セルに =ROW() G列は、連番をB列の個数で割ったものです。 求めたい値を出すために (連番-1)/B列の個数 +1 としています G1 =(F1-1)/COUNTA(B:B)+1 =INT((F1-1)/COUNTA(B:B)+1)とすれば求めたい値になります。 H列は連番をB列の個数で割った余りです。 求めたい値を出すために((連番-1)/B列の個数)のあまり +1 としています F1 =MOD(F1-1,COUNTA(B:B))+1 I1セル =INDEX(A:A,G1) J1セル =INDEX(B:B,H1) としてA列、B列の値を引っ張ってきます。 ここでINDEXの第2引数ですが、小数になっている場合切り捨てられて計算されるので、INTを追加しなくても良いです。 わかりにくくなる可能性を加味してINTを加えても良いでしょう。 ある程度の説明はしたつもりですが、それでもわからない点があれば再度質問してください
その他の回答 (5)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! No.1です。 >ちなみにこれは行数が20.30.40と増えてもこのままの数式で対応できますでしょうか? とありましたので 無理矢理の方法を持ってきました。 とりあえず、A列B列とも100行まで対応する数式です。 (範囲指定を広げれば何行でも対応できますが、行数が多すぎると やけに縦長の表になってしまいますよね?) 本来であれば、下の画像の右側の表のように 整理した方が良いと思うのですが・・・ ためしに、C1セルに =INDEX($A$1:$A$100,INT((ROW(A1)-1)/COUNTA($B$1:$B$100)+1))&INDEX($B$1:$B$100,IF(MOD(ROW(A1),COUNTA($B$1:$B$100))=0,COUNTA($B$1:$B$100),MOD(ROW(A1),COUNTA($B$1:$B$100)))) としてオートフィルで下へコピーしてみてください。 どうしても縦に表示したいのであれば 希望に近い形になると思います。 以上、何度も失礼しました。m(__)m
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
#3です 特に間違っているという返答がないのでいいのかな。 >ちなみにこれは行数が20.30.40と増えても >このままの数式で対応できますでしょうか? 数式が理解できていないまま回答するのは避けたいですが、 順序を追って説明するのも大変なので、最終回答のみです。ごめんなさいm(_ _)m C1セルに =IF(COUNTA($A:$A)*COUNTA($B:$B)<ROW(),"", INDEX($A$1:INDEX($A:$A,COUNTA($A:$A)),(ROW()-1)/COUNTA($B:$B)+1)&" " &INDEX($B$1:INDEX($B:$B,COUNTA($B:$B)),MOD(ROW()-1,COUNTA($B:$B))+1)) わからない部分のみ、再度質問していただければうれしく思います。
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
- imogasi
- ベストアンサー率27% (4737/17069)
質問の意味がわかりにくい。 >(※数字は仮ですとは? 10行の例でなく3X3列ぐらいの例を挙げられないのか。 その過程で得られる、抽象化能力(パターン化)こそ大切なんだ。 質問とは異なるが B列を縦のものを横にする(コピーし、形式を選択して貼り付けー行列を入れ替える) 文字列でやっているが数字でも同じだと思う。 a x b y c z を - x y z a b c にする そしてB2には =$A2&B$1と入れて、縦横に式を複写すると 組み合わせが出来るよ。 - x y z a ax ay az b bx by bz c cx cy cz 2次元の組み合わせの場合はこれがわかりやすい。 これB2:D4のデータを、ある列に1列化することも可能だが。 =INDEX($B$2:$D$4,MOD(ROW()-2,3)+1,INT((ROW()-2)/3)+1) をF2に入れて、下方向に式を複写する。 ax bx cx ay by ・・・
お礼
ありがとうございます。 理解するのにも一苦労でした・・・ 勉強します。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 参考になるかどうか分かりませんが・・・ 一例として、 とりあえずA・B列ともデータ数は10ということでの数式になります。 A1~A10・B1~B10セルにデータが入っていると仮定して C1セルに =INDEX($A$1:$A$10,INT((ROW()-1)/10)+1)&INDEX($B$1:$B$10,IF(MOD(ROW(),10)=0,10,MOD(ROW(),10))) としてオートフィルで下へコピーではどうでしょうか? 尚、エラー処理はしていません。 以上、参考になれば幸いですが、 他に良い方法があれば軽く読み流してくださいね。m(__)m
お礼
ありがとうございます。 無事できました。 ちなみにこれは行数が20.30.40と増えてもこのままの数式で対応できますでしょうか?
お礼
本当にありがとうございます。 正直、いただいた内容数字以外まったく理解できてません・・・ おっしゃる通り、きちんと自分で理解してそのうえでわからない部分を補足にて説明させていただきます。 本当にありがとうございます!