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

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

_Kyleの回答

  • _Kyle
  • ベストアンサー率78% (109/139)
回答No.17

#11,13,15,16です。 #16の続きです。 親と同じモジュールに記述してください。 '--------↑ツヅク↑------------------ 'チェック---------- Private Sub Sample_c()  Dim ckFlg As Boolean  Dim i   As Long  Dim j   As Long    'チェック---  For i = 1 To psCnt   ckFlg = True   For j = 1 To rsCnt    If Not dtTbl(ckAry(j), psAry(i)) Then     ckFlg = False     Exit For    End If   Next j   If ckFlg Then Exit Sub  Next i    'ヒット-----  rtCnt = rtCnt + 1  rtAry(rtCnt) = rsAry  If rtCnt Mod 500 = 1 Then   Application.StatusBar = rtCnt & " 件"  End If   End Sub '書出P------------ Private Sub Sample_d(ByRef rtSht As Worksheet)  '宣言-------  Dim dpTbl() As Variant  Dim tpTbl() As Boolean  Dim mxCnt  As Long  Dim i    As Long  Dim j    As Long  Dim k    As Long    Application.StatusBar = "書き出し中"    '並び調整---  ReDim tpTbl(rtCnt, tbSiz)  mxCnt = 0  For i = 1 To rtCnt   k = 0   rsAry = rtAry(i)   For j = 1 To tbSiz    If rsAry(j) Then     k = k + 1     tpTbl(i, odAry(j)) = rsAry(j)    End If   Next j   If mxCnt < k Then mxCnt = k  Next i    '書出配列---  ReDim dpTbl(rtCnt, mxCnt)  For i = 1 To rtCnt   k = 0   For j = 1 To tbSiz    If tpTbl(i, j) Then     k = k + 1     dpTbl(i, k) = j    End If   Next j  Next i  Application.Calculation = xlCalculationManual  Application.ScreenUpdating = False    '書出-------  With rtSht   .Select   .Cells.ClearContents   .Cells(2, 2).Resize(rtCnt, mxCnt).Value = dpTbl  End With  '出順調整---  mxCnt = ((mxCnt - 1) \ 3 + 1) * 3  With rtSht.Cells(2, 2).Resize(rtCnt, mxCnt)   For i = mxCnt To 3 Step -3    .Sort _     key1:=.Cells(1, i - 2), _     order1:=xlAscending, _     key2:=.Cells(1, i - 1), _     order2:=xlAscending, _     key3:=.Cells(1, i), _     order2:=xlAscending   Next i  End With    Application.Calculation = xlCalculationAutomatic End Sub 'ソート------------ Private Sub Sample_s( _  ByVal lvIdx As Long, _  ByVal lvOdr As Long, _  ByVal mnIdx As Long, _  ByVal mxIdx As Long)    Dim tpVrb   As Long  Dim loCnt   As Long  Dim upCnt   As Long  Dim loIdx   As Long  Dim upIdx   As Long  Dim i     As Long  Dim j     As Long    If mnIdx >= mxIdx Then Exit Sub    '両端確定---  loCnt = tbSiz  loIdx = mnIdx  upCnt = 0  upIdx = mxIdx  For i = mnIdx To mxIdx   If ctAry(odAry(i)) >= upCnt Then    upCnt = ctAry(odAry(i))    upIdx = i   End If   If ctAry(odAry(i)) <= loCnt Then    loCnt = ctAry(odAry(i))    loIdx = i   End If  Next i    tpVrb = odAry(mxIdx)  odAry(mxIdx) = odAry(upIdx)  odAry(upIdx) = tpVrb    tpVrb = odAry(mnIdx)  odAry(mnIdx) = odAry(loIdx)  odAry(loIdx) = tpVrb    'ソート-----  i = mnIdx  j = mxIdx    Do   Do    i = i + 1    If i = mxIdx Then Exit Do   Loop While orTbl(odAry(lvIdx), odAry(i)) = False   Do    j = j - 1    If j = mnIdx Then Exit Do   Loop While orTbl(odAry(lvIdx), odAry(j)) = True      If j <= i Then Exit Do   tpVrb = odAry(i)   odAry(i) = odAry(j)   odAry(j) = tpVrb  Loop    '次の階へ---  i = i - 1  If mnIdx + 1 < i And i < mxIdx Then   Call Sample_s(lvIdx + lvOdr, lvOdr, mnIdx + 1, i)  End If  j = j + 1  If mnIdx < j And j < mxIdx - 1 Then   Call Sample_s(lvIdx + lvOdr, lvOdr, j, mxIdx - 1)  End If End Sub '--------↑ココマデ↑------------------ ■追記 もし、わたしの回答が、 課題を解決する上でいくらかでもお役に立てたなら たいへんうれしく思いますが、 「横入り」とか「後出し」の是非はまた別の問題でして^^;;;; 締切りの際は【くれぐれもお間違えのないよう】 重ねてお願いします。 <(_ _)>

jugyou1
質問者

お礼

コメントが遅くなりまして申し訳ありません。excel2007が入っているパソコンをしばらくの間使用することができなかったために、プログラムを動かすことができなかったためです。実際にexcel2007にてプログラムを動かしましたら、3分程度で出力ができました。ありがとうございました。 ひょっとしたらこの件で、また伺いたいこっとがあるかもしれません。その場合に改めてアドバイスを頂けますと幸いです。よろしくお願いします。 余談ですがベストアンサーが1件しか選ぶことができないのが、つらいです。

jugyou1
質問者

補足

久しぶりに書き込みをします。新たに質問をさせてください。 パターン数がエクセル2007の最大行数である104万8576行を超える場合に、 新たに列を変えて続きを出力させることはできますでしょうか? 返信頂けますとありがたいです。よろしくお願いします。

関連する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:▲ 値:■