[[20200714081508]] 『共通で無い数列の抜き出し』(かれん) >>BOT

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『共通で無い数列の抜き出し』(かれん)

はじめまして。
お世話になります。
以下の様な数列を抜き出すマクロを使って頂けないのでしょうか?
1⃣「1123」「4155」「2143」「2241」
2⃣「3211」「5144」「2578」「2142」

結果2143.2578

OS Windows10

< 使用 Excel:Excel2016、使用 OS:unknown >


??

[[20200714072348]] 『共通ではない数字の抜き出し』(ゴン太) 
(通りすがり) 2020/07/14(火) 08:43


相変わらず猿知恵…。
 Sub test2()
    Dim i As Long
    Dim cw As String

    With CreateObject("System.Collections.ArrayList")
        For i = 0 To 3
            .Add Array("1123", "4155", "2143", "2241")(i)
        Next i
        For i = 0 To 3
            cw = Array("3211", "5144", "2578", "2142")(i)
            If .Contains(cw) = True Then
                .Remove cw
            Else
                .Add cw
            End If
        Next i
        MsgBox .Item(2) & vbLf & .Item(6), vbInformation
    End With
 End Sub
(???) 2020/07/14(火) 09:40

Sub main()
    Dim x As String
    Dim y As String
    Dim dic As Object
    Dim ar As Variant
    Dim ar1 As Variant
    Set dic = CreateObject("Scripting.Dictionary")
    x = "「1123」「4155」「2143」「2241」"
    y = "「3211」「5144」「2578」「2142」"
    For Each ar In Array(x, y)
        For Each ar1 In Split(ar, "「")
          dic(conv(Val(ar1))) = dic(conv(Val(ar1))) + 1
        Next ar1
    Next ar
    For Each ar In Array(x, y)
        For Each ar1 In Split(ar, "「")
          If dic(conv(Val(ar1))) = 1 Then MsgBox Val(ar1)
        Next ar1
    Next ar
End Sub

Function conv(arg)

    Dim i As Long
    For i = 0 To 9
        If InStr(arg, i) > 0 Then conv = conv & i
    Next i
End Function

(mm) 2020/07/14(火) 10:57


 こんにちは ^^ 回し好きのおじさんコード。。。^^;
Option Explicit
Sub OneInstanceMain()
    Dim i&, n(), v, j&, k&, x, vv, f As Boolean
    n = Array(1123, 4155, 2143, 2241, 3211, 5144, 2578, 2142)
    For Each v In n
        For i = 1 To Len(v)
            x = Mid(CStr(v), i, 1)
            For k = 1 To Len(v)
                If x = Mid(CStr(v), k, 1) Then
                    j = j + 1
                End If
            Next
            If j > 1 Then
                f = True
            End If
            j = 0
        Next
        If Not f Then
            vv = vv & v & Chr(13)
        End If
        f = False
    Next
    MsgBox vv
End Sub
(隠居じーさん) 2020/07/14(火) 11:11

別案だされちゃうと簡略版が無視されそうなので、本当はこうでしょ?、というコードも書いておきますかね。
 Sub test3()
    Dim i As Long
    Dim cw As String
    Dim cw1 As String
    Dim cw2 As String

    With CreateObject("Scripting.Dictionary")
        For i = 0 To 3
            cw1 = Array("1123", "4155", "2143", "2241")(i)
            cw2 = fSort(cw1)
            .Add cw2, cw1
        Next i
        For i = 0 To 3
            cw1 = Array("3211", "5144", "2578", "2142")(i)
            cw2 = fSort(cw1)
            If .Exists(cw2) = True Then
                .Remove cw2
            Else
                .Add cw2, cw1
            End If
        Next i
        For i = 0 To .Count - 1
            cw = cw & " " & .Items()(i)
        Next i
        MsgBox Replace(Trim(cw), " ", vbLf), vbInformation
    End With
 End Sub

 Function fSort(cOrg As Variant) As String
    Dim i As Long
    With CreateObject("System.Collections.ArrayList")
        For i = 1 To Len(cOrg)
            .Add Mid(cOrg, i, 1)
        Next i
        .Sort
        fSort = Join(.toarray, "")
    End With
 End Function
(???) 2020/07/14(火) 12:02

(???)さん(隠居じーさん)さん
丁寧な対応ができなくてすいませんでした。マクロの作成、ありがとうございました。
(為五郎) 2020/07/14(火) 19:22

トピックが乱立されててよくわからないので適当に整理してみた。

 済?
[[20200714072348]] 『共通ではない数字の抜き出し』(ゴン太)
[[20200714081508]] 『共通で無い数列の抜き出し』(かれん)
[[20200714123210]] 『連続した4桁の数字のペアの違い』(為五郎)
[[20200714160300]] 『4桁の抽出』(為五郎)

 現行トピック?
[[20200714163259]] 『固定した4桁の数字では意味がありません。』(為五郎)

(偽五郎) 2020/07/14(火) 22:36


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.