[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『連続した4桁の数字のペアの違い』(為五郎)
「1542」「3652」「7123」……のグループと
「2536」「1479」「3633」……のグループを比べて違う数字がでたら
表示する様にしたいと思っています。四桁な数字は順不同でも同じと考えています。
マクロ解決してくれるかたお願いします。
< 使用 Excel:Excel2016、使用 OS:Windows10 >
??
[[20200714081508]] 『共通で無い数列の抜き出し』(かれん)
[[20200714072348]] 『共通ではない数字の抜き出し』(ゴン太)
(通りすがり) 2020/07/14(火) 12:45
コードは既に書きました。 貴方の思った答えにならなかったのは、貴方の書いた例が間違っているからでは? 3つ目の質問では、前提条件の確認にもならない例書いているし、どんどん迷走してる感じです。
(???) 2020/07/14(火) 13:53
> 1⃣「1123」「4155」「2143」「2241」 > 2⃣「3211」「5144」「2578」「2142」 > 結果2143.2578
数字の順番が違っても同一判定するという事になったので、1123と3211、2241と2142は同一判定し消える、というところまではOK。2143と2578が残るのもOK。
問題は、4155と5144は、同一なのか違うのかという点。 つまり、1,4,5 の3種しか使っていないから同一、とするのか、4と5はそれぞれ出現数が違うから別とするのか。 これを同一とするなら、mmさんや隠居じーさんさんのコードを採用すれば良いはず。(1234と1111は同一?、という疑問は残りますが)
別とするなら、4155と5144の組み合わせは、どちらかを書き間違えていたので、例示の結果通りにならない、という事。 私のコードを採用すれば終了だし、「間違っているからでは?」と教えているのに無視するというのは謎です。 もしかして、指摘されても間違いに気づかなかったとか?
そして、上記の設問が解決していないのに、新たにこのスレッドを立ち上げたというのが問題。 今度の例は、どういう結果になるのが正なのか書いていないから、今までのコードで良かったのかどうか、判断できません。 他人を装って設問をころころ変えている様を、迷走している、と表現しています。 しかも、同じ内容で更に質問してるし…。
(???) 2020/07/14(火) 16:50
以上の通りです。
(為五郎) 2020/07/14(火) 20:23
出現数が違うのでA3です。
(為五郎) 2020/07/14(火) 20:32
この質問の類は、無視した方が良いのでは。 やたらとHNを変えて同じ質問を複数質問したり、自分の間違いを棚上げして 回答者を嘘つきよばり。 まともな一般人とはかけ離れているような気がします。 (Why) 2020/07/14(火) 20:35
こんばんは! ちょっと書いてみました。 4文字とか文字数の制限は加えていません。
こんな↓レイアウトがあったとして 1行目をグループA 3行目をグループB 5行目に答えを出します。(あってますかぁ???(^^;)
__A______B______C_____D________E___
[1] 2778 0078 0484 0254 6691
[3] 1388 7008 9616 1479 1299
[5] 2778 0448 0245
先頭に 0 がある場合があるでしょうからあくまでも文字として考えています。。。 上手く行かなかったら応用してみてください。。。(例によっておぉぉぉぉいいいっ(^^;)
Option Explicit
Sub てすと()
Dim x As Variant
Dim xx As Variant
Dim y As Variant
Dim z As Variant
Dim v() As Variant
Dim i As Long
Dim n As Long
x = Range("A1").CurrentRegion.Resize(1).Value
xx = x
y = Range("A3").CurrentRegion.Resize(1).Value
分割 x
分割 y
再編 x
再編 y
For i = LBound(x, 2) To UBound(x, 2)
z = Application.Match(x(1, i), Application.Index(y, 1, 0), 0)
If Not IsError(z) Then
ReDim Preserve v(n)
v(n) = xx(1, i)
n = n + 1
End If
Next
If n > 0 Then
With Range("A5")
.EntireRow.ClearContents
.Resize(, UBound(v) + 1).NumberFormat = "@"
.Resize(, UBound(v) + 1).Value = v
End With
End If
Erase x, y, v, xx
End Sub
Sub 分割(ByRef x As Variant)
Dim i As Long
Dim j As Long
For i = LBound(x, 2) To UBound(x, 2)
ReDim v(Len(x(1, i)) - 1)
For j = LBound(v) To UBound(v)
v(j) = Mid(x(1, i), j + 1, 1)
Next
QuickSort v, LBound(v), UBound(v)
x(1, i) = v
Next
End Sub
Sub 再編(ByRef x As Variant)
Dim v As Variant
Dim i As Long
For i = LBound(x, 2) To UBound(x, 2)
v = Replace(Join(x(1, i)), " ", "")
x(1, i) = v
Next
End Sub
Private Sub QuickSort(MySAry As Variant, ByVal MySLeft As Long, ByVal MySRight As Long)
Dim MySMid As Long
Dim i As Long, j As Long
Dim MyStmp As String
MySMid = MySAry((MySLeft + MySRight) \ 2)
i = MySLeft
j = MySRight
Do
Do While MySAry(i) < MySMid
i = i + 1
Loop
Do While MySAry(j) > MySMid
j = j - 1
Loop
If i >= j Then Exit Do
MyStmp = MySAry(i)
MySAry(i) = MySAry(j)
MySAry(j) = MyStmp
i = i + 1
j = j - 1
Loop
If MySLeft < i - 1 Then QuickSort MySAry, MySLeft, i - 1
If MySRight > j + 1 Then QuickSort MySAry, j + 1, MySRight
End Sub
(SoulMan) 2020/07/14(火) 21:00
並び替える前のオリジナルの数列がいいでしょうから、、xx を追加しました。。。 ほんとにあとは応用して頂けるとたすかります。。。 (SoulMan) 2020/07/14(火) 21:28
ほんとにすみません。続きがあったのですね??? [[20200714163259]] 途中を全然みていませんでした。。。こんなにトピをばらまくのはよくないですね。。。
それと、、この関連のトピの例題に合わせると。。。Not なのですね(^^; すみません、、、これまた全然みていませんでした。。。m(__)m (SoulMan) 2020/07/14(火) 21:39
>SoulManさんあなただけが頼りです、お願いします。 すみません。。。無理です。。(^^;
というかぁ、、ちゃんと説明さえされれば誰でも答えてくれますよ?? 言葉じゃなくて図がいいです。。
Before After です。。。 もっと質問上手にならないと、、損???をするのはトピ主さん本人ですよ?? 私なんかはただの暇つぶしで書いてるだけですから(^^;
頑張ってくださいね。。では、、では、、、 (SoulMan) 2020/07/14(火) 21:52
済? [[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.