- ベストアンサー
共通の値を持つ座標の組み合わせについて
nag0720の回答
- nag0720
- ベストアンサー率58% (1093/1860)
改良版のプログラムです。 100×100で実行する場合は、SIZEを100に変更してください。 組み合わせ結果は随時、Sheet2に出力されますので、プログラムの実行はコード画面からではなく、シート画面のツールメニューの「マクロ」から実行してください。 また、シート画面下段のステータスバー領域に途中経過を表示していますから、ステータスバーを表示状態にしておいてください。 スピード重視でコーディングしているので前より速くなっているはずですが、100×100ではどのくらい時間が掛かるか見当もつきません。 もしこれでだめだったら、他の言語で作るしかないでしょう。 Option Explicit Option Base 1 Const SIZE = 10 Dim C(SIZE, SIZE) As Boolean Dim TBL(SIZE, 10000) As Boolean Dim Count As Integer Dim S(SIZE) As Integer Dim SS As String Sub Combination() Dim i As Integer, j As Integer For i = 1 To SIZE - 1 For j = i + 1 To SIZE C(i, j) = Cells(i + 1, j + 1) Next Next Worksheets("Sheet2").Select Count = 0 For i = 1 To SIZE - 1 S(1) = i AddCombin 1, i S(1) = 0 Next Application.StatusBar = "完了" End Sub Sub AddCombin(n As Integer, k As Integer) Dim i As Integer, j As Integer Dim ExistNext As Boolean, CheckFlag As Boolean ExistNext = False For j = k + 1 To SIZE CheckFlag = True For i = 1 To n If Not C(S(i), j) Then CheckFlag = False Exit For End If Next If CheckFlag Then ExistNext = True S(n + 1) = j AddCombin n + 1, j S(n + 1) = 0 End If Next If n = 1 Or ExistNext Then Exit Sub SS = "" For i = 1 To n SS = SS & " " & S(i) Next Application.StatusBar = "処理中:" & SS For j = 1 To Count CheckFlag = True For i = 1 To n If Not TBL(S(i), j) Then CheckFlag = False Exit For End If Next If CheckFlag Then Exit Sub Next Count = Count + 1 For j = 1 To SIZE TBL(j, Count) = False Next For i = 1 To n TBL(S(i), Count) = True Worksheets("Sheet2").Cells(Count + 1, i + 1) = S(i) Next Worksheets("Sheet2").Cells(Count + 1, 2).Select End Sub
関連するQ&A
- エクセルVBAでVLookupを使って値を転記する
エクセル2003で商品の一覧表を作成しています。 Sheet1は商品一覧(左図) Sheet2は価格表(右図)となっています。 マクロを使用して、Sheet1のB列に価格表のデータを転記させたいと考えています。 VLookupになるのかと思い、自分でいろいろとやってみたのですが、 どうしても動作せず、挫折してしまいました。 商品一覧の最後の行までいって、空白セルがくると止まるというのが、 難しくてできませんでした。 どうかお願いいたします。
- ベストアンサー
- Visual Basic
- 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の勉強のために活かしたいく、よろしくお願いします。
- ベストアンサー
- その他MS Office製品
- エクセル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で解る方、よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセル 値が一致しないものを見つけたい
お世話になります。 エクセルで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列は空欄が無い状態=最終行以下は空白です。 よろしくお願い致します。
- ベストアンサー
- Visual Basic
- 【VBA】組み合わせの計算
VBAにてランダム(適当)な値10個の中で1.5に近い組み合わせを探し、それ以外の値を隣の列に移動させたいのですが、方法がわかりません。 どなたか教えてください
- ベストアンサー
- Excel(エクセル)
- 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:▲ 値:■
- ベストアンサー
- オフィス系ソフト