重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

以下のようなデータ
  A列     B列
192.170.1.1 192.171.1.1
192.171.1.2 192.170.1.2

IPアドレスの第2オクテッドを比較し数値の小さいほうをが左にくるように
VBAでクリック釦を作成したいのですがどのように記述すればよいでしょうか?

釦をクリックすると
  A列     B列
192.170.1.1 192.171.1.1
192.170.1.2 192.171.1.2
のように該当のセルがA列・B列入れかえができる。

IPアドレスを取得する関数は
ユーザー関数を使用してsplitn(範囲、第○オクテッド)で
第2オクテッドの数値は取得できます。

よろしくお願いします。

A 回答 (3件)

淡々と比較して条件を満たせば書き換えるだけですが。



準備:
オートシェイプとか画像とか使ってシートにボタン絵柄を載せる
右クリックしてマクロの登録で下記のようなのを取り付ける

sub macro1()
 dim i as long
 dim buf
 for i=1 to range("A65536").end(xlUp).row
  if val(split(cells(i, "A"), ".")(1)) > val(split(cells(i, "B"), ".")(1)) then
   buf = cells(i, "A")
   cells(i, "A") = cells(i, "B")
   cells(i, "B") = buf
  end if
 next i
End Sub
    • good
    • 0

オクテッド?


オクテット(octet)では?
    • good
    • 0

エクセルの並べ替えは、セルにそのデータが実際になければ、言葉で「第2オクテッドを比較し」など表現できても、並べ替えできない(しにくい)。

対応したデータを配列などに入れて、その配列データを元にソートアルゴリズムでプログラムする方法は理論的にはあるが、面倒でテストも十分出来ない場合が多いので使うべきではない。
エクセルVBAには配列に対するソートはない(例 [配列].Sort Key1、・・・のようなものはない。
ちなみに、VB.NET系では「vb.net 配列 ソート」でググってみよ。
エクセルVBAのSortメソッドは、シートのRangeに対してあるのだ。
ーー
だから新しい列のセルに対応行のA列から第1オクテッドを省いたデータを実際に作り、その列を対象にソートするほか無いと思う。
そのコードはマクロの記録で判るだろう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!