• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:共通の値をもつ座標の組み合わせについて)

共通の値を持つ座標の組み合わせについて

nag0720の回答

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.3

きれいなコードではないですが、次のようになります。 Sub test() Dim TBL1(10) As Integer Dim TBL2(10) As Integer n = 0 For i = 1 To 9 m = 0 TBL1(m) = i TBL2(m) = i For j = i + 1 To 10 If Cells(i + 1, j + 1) = 1 Then m = m + 1 TBL1(m) = j TBL2(m) = j End If Next Do Flag = False For k = 1 To m If TBL2(k) > 0 Then Flag = True Exit For End If Next If Not Flag Then Exit Do Flag = True For k1 = 1 To m - 1 For k2 = k1 + 1 To m If TBL2(k1) > 0 And TBL2(k2) > 0 Then If Cells(TBL2(k1) + 1, TBL2(k2) + 1) = 0 Then Flag = False Exit For End If End If Next If Not Flag Then Exit For Next If Flag Then For p = 1 To n Flag2 = True For k = 0 To m If TBL2(k) > 0 Then Flag3 = False For j = 1 To Worksheets("Sheet2").Cells(p + 1, 1) If Worksheets("Sheet2").Cells(p + 1, j + 1) = TBL2(k) Then Flag3 = True Exit For End If Next If Not Flag3 Then Flag2 = False Exit For End If End If Next If Flag2 Then Flag = False Exit For End If Next End If If Flag Then n = n + 1 j = 0 For k = 0 To m If TBL2(k) > 0 Then j = j + 1 Worksheets("Sheet2").Cells(n + 1, j + 1) = TBL2(k) End If Next Worksheets("Sheet2").Cells(n + 1, 1) = j End If k = m Do While k > 0 If TBL2(k) > 0 Then TBL2(k) = 0 Exit Do Else TBL2(k) = TBL1(k) k = k - 1 If k <= 0 Then Exit Do End If Loop Loop Next For p = 1 To n Worksheets("Sheet2").Cells(p + 1, 1) = "" Next End Sub なお、Sheet2のA列を作業用に使用しています。(最後に消去しています) もしA列が使えない場合は他の列に変更してください。 結果は、 1 2 5 7 1 5 7 8 3 7 4 5 7 5 8 10 7 8 9 となりました。 質問の図の右側の結果には「1 5 7 8」と「5 8 10」がありませんが、これは組み合わせとして成立していないんでしょうか?

jugyou1
質問者

お礼

ご回答いただきましてありがとうございました。 質問の「5 8 10」がありませんが、これは組み合わせとして成立していないんでしょうか? というものですが、成立します。目で追ってると抜け落ちてしまうところがありました。 ちなみに、今回は10行×10列ですが、これが100行×100列になる場合や左図の表の中の値1が多くなると、プログラム開始から終了までの時間は長くなりますか?アドバイスいただけますとありがたいです。

関連するQ&A

  • エクセルVBAでVLookupを使って値を転記する

    エクセル2003で商品の一覧表を作成しています。 Sheet1は商品一覧(左図) Sheet2は価格表(右図)となっています。 マクロを使用して、Sheet1のB列に価格表のデータを転記させたいと考えています。 VLookupになるのかと思い、自分でいろいろとやってみたのですが、 どうしても動作せず、挫折してしまいました。 商品一覧の最後の行までいって、空白セルがくると止まるというのが、 難しくてできませんでした。 どうかお願いいたします。

  • 2つの数字の組み合わせに対応する文字を返すコードを教えてください。

    すみませんがお知恵を拝借させてください。下のような表で,B列の値に0~3,C列の値に0~3のいずれかを入れたとき,2つの数字の組み合わせに対応するA列にある名前を返すコードを教えていただけませんか。  例えば,B列の値=2,C列の値=0のとき,「酒井」と出力したいのですが。 ※2つの数字の組み合わせに重複はありません。範囲は下に書いた10名分のみです。よろしくお願いいたします。  ----------------------------------------- B列の値:_ C列の値:_ A列  B列  C列 ------------------- 大田  3   0 酒井  2   0 三宅  2   1 坂下  1   0 原田  0   0 山内  0   1 山口  1   1 相馬  1   2 渡辺  0   2 安藤  0   3

  • 選択した行の値だけを合計

    選択した行の値だけを、その行のどのセルをダブルクリックしても合計する方法を教えてください。 A列は、ID,B・C列は値があらかじめ入力されています。 D列に、合計を表示させたいです。 関数・VBAでは、一括して合計はでましたが、VBAで必要な行だけの合計の出し方がわかりません。 VBAの勉強のために活かしたいく、よろしくお願いします。

  • エクセルVBAでのまとめ計算

     初めまして、よろしくお願いします。 データーで    A      B     C     D      E ・・・ 1              5     7      2 2              3     7      0 3 4              6     3      6 5              2     8      3 6              0     3      4 ・     ・      ・      ・      ・ ・     ・      ・      ・      ・ 100             3     4      5 という表がありますA列には(C列の値/(D列以降の平均値))をB列には(C列の値-(D列以降の平均値))を表示させたいと思います。たまに3行のような空白の行があります。関数式ではなく、VBAで解る方、よろしくお願いします。

  • 組合せVBA

    環境はExcel2002です A列に連番数字1から100が入力されていて B列の100行には数字のデータがあるとします ある目的の数値Xに一番近くなるB列の組合せをC列に表示したいのです…VBAで B列に表示するのはA列の連番です 『一番近くなる』の意味は2通りあって、両方の算出方法をご教示願います (1)目的の数値Xを絶対超えないで目的の数値Xに一番近くなる組合せ (2)目的の数値Xを必ず超えて目的の数値Xに一番近くなる組合せ

  • エクセル 値が一致しないものを見つけたい

    お世話になります。 エクセルでA列B列にそれぞれ数値が入っている表があり、A列にはあってB列にはない数値を分かるようにしたいと思っています。      A列  B列   C列 1行目  1   1 2行目  1   5 3行目  4   0   4 4行目  5   1    5行目  1   0   1 ・A1、A2、A5の値が1であるように、A・B列とも重複する数値が入ることがあります。 ・A列とB列の値は1対1で対応し、例えばA1がB1と対応するならA2はB4と対応します。 この表ではA3、A5に対応する値がB列にないので、C列にその値を表示させています。 ・一致しない数字を分かるようにする方法にこだわりはなく、例のようにC列に値や×を表示させる、A列に色をつける、一致するものがあった数値は削除する等、なんでも構いません。 お分かりになる方、どうぞよろしくお願いいたします。

  • 【エクセル】歯抜けの空白欄に上段と同じ値を入れたい

    エクセル(2010)で ある表に ところどころ空欄があり、 そこに上段と同じ値を入れたいです。 随時発生する作業のため マクロ(もしくはVBA)が組めればと考えておりますが、 初心者につき、ご教示いただけますでしょうか。 A列:項番 B列:大項目 C列:中項目 D列:小項目 E列:備考 ※1行目:項目名、2行目以降:値 という表で、 A列のナンバリング・D列の小項目 以外は 上と同じ扱いとなるため空欄となってしまっていますが、 アクセス(DB)に取り込むため、空欄の無い形にしたいのです。 ※ちなみに、A列・D列は空欄が無い状態=最終行以下は空白です。 よろしくお願い致します。

  • 【VBA】組み合わせの計算

    VBAにてランダム(適当)な値10個の中で1.5に近い組み合わせを探し、それ以外の値を隣の列に移動させたいのですが、方法がわかりません。 どなたか教えてください

  • Excel VBAにて座標読み込み・配置

    当方、Excel VBAに関しては全くのド素人でございます。 お客さんに頼まれて、次のことをやりたいのですが、どうしたらよいか途方に暮れています。 (-50,-50)~(50,50)までの2mピッチの合計2601個のxyz座標データ(txt)をSheetに読み込み。 A列=x B列=y C列=z そしてAD列・26行のセルを座標(0,0)として、セルにz値を展開したいのです。 横軸=x 縦軸=y BC列・1行が(50,50) E列・51行が(-50,-50) 以上のことをExcel VBAでやりたいのですが・・・ 可能でしょうか? 宜しくお願いします。

  • エクセルVBA 変数Aと変数Bの組み合わせに対応する値を返すコード

    ワークシート上に次の表があり,この表をもとにして,変数A(0~4)と変数B(0~4)の組み合わせに対応するC列の値を返すコードは,どう書いたらよいでしょうか。  例えば,変数Aのセルに●(4),変数Bのセルに▲(0)と入力したら,値のセルに■(5)と表示させたいのです。  どなたか教えていただけませんか。 A列  B列  C列  4   0   5  3   1   4  3   0   5  2   2   3  2   1   4  2   0   4  1   3   2  1   2   2  1   1   3  1   0   3  0   4   1  0   3   1  0   2   2  0   1   3  0   0   3 変数A:● 変数B:▲ 値:■