- ベストアンサー
EXCELのVBAによる星取表から組合せ表の作成
- VBAを使用して、星取表から組合せ表を作成する方法についての質問です。
- 星取表は、ある文字と他の文字の組み合わせを示す表です。
- 組合せ表は、星取表を元にして特定の文字と他の文字の組み合わせを示す表です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
なかなか回答がつかないようなので 星取表からどのような条件で、組合せ表に成るのか分かりません 組合せ表なので相手がいると思うのですが 相手は何処にいるのでしょうか? >VBAについて殆ど理解できていません は、かまいませんが、ここでコードを得ても 自分の環境に合わせたり、エラー回避のコードは 自分でやる必要があるため、最低限のスキルが無いと 意味の無いものになってしまいます
その他の回答 (2)
- hige_082
- ベストアンサー率50% (379/747)
一応、質問の回答にはなっているのではないかと思います Sub test() Dim a(12, 12), b(12) As Variant Dim i, ii, iii, iiii As Integer Dim cell, cell_all As Range Dim sh_in, sh_out As Worksheet Set sh_in = Worksheets("Sheet1") Set sh_out = Worksheets("sheet2") For i = 0 To 12 For ii = 0 To 12 a(i, ii) = sh_in.Cells(i + 1, ii + 1) Next ii Next i For i = 1 To 12 For iii = 1 To 12 If a(i, iii) = "○" Then For iiii = 1 To 12 If a(iii, iiii) = "×" Then a(i, iiii) = "×" Next iiii End If Next iii ii = sh_out.Range("a" & Rows.Count).End(xlUp).Row + 1 For iii = 0 To 12 sh_out.Range("a" & ii).Offset(0, iii) = a(i, iii) Next iii Next i End Sub
お礼
hige_082さん 意味不明な登校に構っていただき、ありがとうございます。 説明不足で、解決できませんでしたが一旦締めます。 また、近日中にこの広場へ、もっと理解していただけるような内容 (文章)にして、再掲示したいと思います。 VBAの達人の皆様、またよろしくお願いいたします。
補足
hige_082さん 回答ありがとうございます。 まだ、私の説明が不足していたようです。 組合せは、現在は試行錯誤で行っていますが、 下記の60数通りになるかと思います。 行はB1~M2までが「あ~し」の表示です。 また、列AはケースのNoです。 まず、「あ」を中心に組合せを考えますと ケース1、B2,D2,H2=○、C2,E2,F2,G2,I2,J2,K2,L2,M2=×(若しくは””) ケース2、B3,D3,I3=○、ケース1同様に他のセルは、×、若しくは空白 ケース3、B4,D4,K4=○、上記同様に他のセルは、×、若しくは空白 ケース4、B5,H5,L5=○、上記同様に他のセルは、×、若しくは空白 ケース5、B6,H6,M6=○、上記同様に他のセルは、×、若しくは空白 ケース6、B7,I7,L7=○、上記同様に他のセルは、×、若しくは空白 ケース7、B8,D8,M8=○、上記同様に他のセルは、×、若しくは空白 ケース8、B9,K9,L9=○、上記同様に他のセルは、×、若しくは空白 ケース9、B10,K10,M10=○、上記同様に他のセルは、×、若しくは空白 次に「い」の組合せです。(30通りの組合せが出来ると思いますが一部にします) ケース10、C11,D11,E11,H11=○、 B2,F2,G2,I2,J2,K2,L2,M2=× ケース11、C11,D11,E11,I11=○、 ケース10同様他にセルは×若しくは”” 〃 〃 ケース38、C39,I39,J39,M39=○、 ケース10同様他にセルは×若しくは”” ケース39、C40,L40=○、 ケース10同様他にセルは×若しくは”” 次は「う」について、「え」次は「お」と順次行い 最終の組合せは、「き」を対象にした組合せになろうかと思います。 (「き」の組合せは10通り?) このように、「あ」から順次組合すことで行いますが、ケース39のように、2つの組合せの場合だってあります。すべての組合せを求めたいのです。 回答者の手を煩わし、申し訳ありません。 よろしくお願いいたします。 なお、VBAに疎いため、コードに少しの注釈、説明を加えて頂きますと、助かります。
- hige_082
- ベストアンサー率50% (379/747)
何度も読み返しましたが、理解できない 組み合わせ表の数字の意味は? 組合せとはグループを作ると言うこと? 一般的に星取表とは試合結果を表すものだと思うのですが (相性表)ともなっているので、理解が出来ない 組み合わせ表とは一般的には、試合の組み合わせではないの? 「あ」を基準にしているのに、なぜ「く」や「こ」が関係あるのか? >「あ」は、「う」「き」「く」「こ」「さ」「し」と相性は良いので、組み合わせることが可能です 組み合わせが可能とは、「あう」、「あき」、「あく」・・・と言うことなのか それとも、「あうきくこさし」が一まとまりなのか? 組み合わせや相性と言う表現も適当ではないと思う 抽出、検索、比較、選択などこのスレでよく使用されている 表現方法で、再度質問されることをお薦めします 表を提示されるのであれば、列行番号も表示された方が回答しやすいです 条件や手順を明確化するのも忘れないでください あの行を選択し丸を抽出 抽出されたものの項目がxxであればxx処理 xxで無ければoo処理など お力になれずすみません
補足
hige_082様 確かに、星取表とは違いますね。どちらかといえば相性表のほうが少し近い表現かなと思っています。「あ」から「し」は製品と思ってください(いろいろ入れ変わったり、増減がありますが)。製品を製造するのに3~5台の機械を使用しますが、それぞれの製品を同時に製造した場合、機械がバッティングすることがあります。1台でもバッティングすれば、表に×印がつきます。(×印同士は、同時に生産できない→組合せはない) 「あ」から始まって、すべてのケースについて組合せを表記したいのです。 まず、分かり難い表ですが、列行番号で表しますと下記のようになります。 B1=あ,C1=い,D1=う,E1=え,F1=お,G1=か,H1=き,I1=く,J1=け,K1=こ,L1=さ,M=し, B2=-、C2,E2,F2,G2,J2=×、D2,H2,I2,K2,L2,M2=○, B3=-、D3~M3すべて○、 D4=-、J4,L4,M4=×、E4,F4,G4,H4,I4,K4=○ E5=-、F5,G5,J5=×、H5,I5,K5,L5,M5=○ F6=-、G6,J6=×、H6,I6,K6,L6,M6=○ G7=-、J7=×、H7,I7,K7,L7,M7=○ H8=-、I8,J8、K8=×、L8,M8=○ I9=-、J9,K9=×、L9,M9=○ J10=-、K10,L10,M10=× K11=-、L11,M11=○ L12=-、M12=× M13=-、 A2からA13は「あ」から「し」を表示です。 表を作成されると、理解しやすいと思いますが、同時に製品を作ろうとするとバッティングして出来ない場合が多々発生して、最大でも同時4製品が出来るだけと思います。 その組合せは現在、自分で考えながら作成していますが、自動で作成したいのです。(製品が変わると、使用機械も変わるためです。なお、相性表?は関数で対応できます) 少しは、ご理解いただけたでしょうか。 組合せから3つ取り出して組合せは何通り?というように単純でなく、条件があるため、どのようにしたら良いか、分かりません。 よろしくお願いいたします。
補足
説明不足ですみません。 「○」は相性良し、「×」は相性が悪く一緒の組合せには出来ません。星取表から、「あ」は、「う」「き」「く」「こ」「さ」「し」と相性は良いので、組み合わせることが可能です。ところが、「き」は「く」と「こ」と相性が悪く、一緒には組合すことが出来ません。 また、「う」も「さ」「し」と相性が悪く組合すことが出来ません。 まず、「あ」から組合せを作ると、 「あ」「う」「き」・・・・上記 「あ」「う」「く」・・・・「く」と「こ」は相性× このように、「あ」を対象にした組合せを作成し、順次「い」、「う」と行っていきます。ここで、「い」のように「あ」を除きどれとでも相性のよいので組合せは沢山出来ます。 「い」「う」「え」「き」・・・・相性悪は(1)お:え (2)か:え、お (3)く:き (4)「け」は「い」を除きすべて×、(5)こ:き、く、け(6)・・・ hige_082様、ややこしく説明が上手く出来ませんですがご理解いただけたでしょうか。 >VBAについて殆ど理解できていません は、かまいませんが、ここでコードを得ても 自分の環境に合わせたり、エラー回避のコードは 自分でやる必要があるため、最低限のスキルが無いと 意味の無いものになってしまいます。 仰るとおりです。 現在、少しでも理解できるよう、スキルしていますが、なかなか進歩していません。 なお、質問の組合せに誤りがありましたので、訂正します。 (誤) あいうえおかきくけこさし・・・ 1○ ○○ ○ (正) 1○ ○ ○ よろしく、お願いいたします。