No.4ベストアンサー
- 回答日時:
public function TextGroupCompare(byval a1 as variant, a2 as variant) as string
dim i as long, j as long
dim res() as variant
dim res1 as variant, res2 as variant
res1 = split(a1, " ")
res2 = split(a2, " ")
on error goto errhandle
redim res(application.max(ubound(res1), ubound(res2)))
for i = 0 to application.min(ubound(res1), ubound(res2))
res(i) = iif(res1(i) = res2(i), res1(i), string(application.max(len(res1(i)), len(res2(i))), "X"))
next i
for j = i to ubound(res)
if ubound(res1) > ubound(res2) then
res(j) = string(len(res1(j)), "X")
else
res(j) = string(len(res2(j)), "X")
end if
next j
textgroupcompare = join(res, " ")
errhandle:
end function
#スペースで区切られたグループ数、グループごとの要素の文字数が異なっていても処理します。が、それに伴い例えばスペースが2つ続いたみたいなのも厳密に処理します。
>もしかしてこんな感じにも出来ますでしょうか
まぁ「ついでに聞いちゃえ」と思いついてかるーい気持ちで書き込んじゃうヒトは実際大勢いるんですが、そーいうのは新しいご相談として新たに投稿し直して下さい。元のご相談内容が「解決しない」ので状況を補足するのは構いませんが、「ついで」で新しい内容を質問されても、付き合わされる方は迷惑に感じていることに気が付いてください。て指摘すると、とたんにムクレてぷいっといなくなっちゃう人も多いんで、気が付いてねって指摘の仕方にまで気を遣うんですけどね。
返信ありがとうございます。
わざわざ関数にしていただきありがとうございます。
>>まぁ「ついでに聞いちゃえ」と思いついてかるーい気持ちで書き込んじゃうヒトは実際大勢いるんですが、そーいうのは新しいご相談として新たに投稿し直して下さい。元のご相談内容が「解決しない」ので状況を補足するのは構いませんが、「ついで」で新しい内容を質問されても、付き合わされる方は迷惑に感じていることに気が付いてください。て指摘すると、とたんにムクレてぷいっといなくなっちゃう人も多いんで、気が付いてねって指摘の仕方にまで気を遣うんですけどね。
確かにその通りです。
以後気をつけます。
No.5
- 回答日時:
A1 ABCDEFG 比較セル
A2 ABDCEFG 比較セル
A3 ABXXEFG 比較したものを出力するセル
と言う事で A3に関数で少し長いかもしれないですが作ってみました。
A3 =IF((A1=A2),A1,IF(MID(A1,1,1)=MID(A2,1,1),MID(A1,1,1),"X")&IF(MID(A1,2,1)=MID(A2,2,1),MID(A1,2,1),"X")&IF(MID(A1,3,1)=MID(A2,3,1),MID(A1,3,1),"X")&IF(MID(A1,4,1)=MID(A2,4,1),MID(A1,4,1),"X")&IF(MID(A1,5,1)=MID(A2,5,1),MID(A1,5,1),"X")&IF(MID(A1,6,1)=MID(A2,6,1),MID(A1,6,1),"X")&IF(MID(A1,7,1)=MID(A2,7,1),MID(A1,7,1),"X"))
もっと式を簡単に出来るかもしれないですが直接的でわかりやすいでしょう。
= 以下をコピーして A3 に入れてみてください。 8桁ある場合は &IF(MID(A1,8,1)=MID(A2,8,1),MID(A1,8,1),"X") を 最後の )) の間にコピーしてあげれば動きます。
新しく解答有難うございます。
keithinさんの言うとおり新規で質問するべきでした。
申し訳ありません。
せっかく作っていただきましたので、ぜひ使用させていただきます。
質問にお付き合いしていただきありがとうございました。
No.3
- 回答日時:
No.1です。
続けて横からお邪魔します。
No.2さんの補足を拝見させていただいて・・・
今回もユーザー定義関数ではなく、単なるマクロになります。
A1・A2セルは半角スペースで区切られた文字が一塊だとして、
両セルとも同じ塊数、一塊の文字数は同じだという前提です。
Sub Sample2()
Dim k As Long, cnt As Long, str As String, myArray1, myArray2
myArray1 = Split(Range("A1"), " ")
myArray2 = Split(Range("A2"), " ")
Range("A3").ClearContents
For k = 0 To UBound(myArray1)
If myArray1(k) = myArray2(k) Then
str = str & myArray1(k) & " "
Else
str = str & WorksheetFunction.Rept("X", Len(myArray1(k))) & " "
End If
Next k
Range("A3") = Trim(str)
End Sub
※ あくまで参考程度で・・・m(_ _)m
No.2
- 回答日時:
ふつーの関数では勿論そういう事ができるのは無いので、次の通りにするとさくっと出来ます。
手順:
ALT+F11を押す
現れた画面で挿入メニューから標準モジュールを挿入する
現れたシートに下記をコピー貼り付ける
public function TextCompare(byval a1 as variant, a2 as variant) as string
dim i as long
for i = 1 to application.max(len(a1), len(a2))
textcompare = textcompare & iif(mid(a1,i,1) = mid(a2, i, 1), mid(a1, i, 1), "X")
next i
end function
ファイルメニューから終了してエクセルに戻る
A3セルに関数として
=textcompare(A1,A2)
と記入して計算させる。
この回答への補足
うおーすごい!
ありがとうございます!
これでもとても満足なのですが
もしかしてこんな感じにも出来ますでしょうか
A1 ABAB CD EF GHJG 比較セル
A2 ABAB GD EF GHJG 比較セル
A3 ABAB XX EF GHJG 比較したものを出力するセル
このようにペアーにしてペアーの中の文字が1つでも違った場合でもペアーごとXにすることも可能ですか?
No.1
- 回答日時:
こんばんは!
A1セルとA2セルの文字数は一緒だという前提になりますが・・・
VBAでの一例です。
画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペースト → Excel画面に戻りマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
Sub Sample1() 'この行から
Dim k As Long
With Range("A3")
.ClearContents
For k = 1 To Len(Range("A1"))
If Mid(Range("A1"), k, 1) = Mid(Range("A2"), k, 1) Then
.Value = .Value & Mid(Range("A1"), k, 1)
Else
.Value = .Value & "X"
End If
Next k
End With
End Sub 'この行まで
※ 関数でないので、データ変更があるたびにマクロを実行する必要があります。m(_ _)m
丁寧な解答有難うございます!
tomさんは最初からセルの番号をコードに打つタイプですね^^
こちらも参考にさせていただきます!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの日付から年末尾2桁と月を1月をA~Lに変換したい 3 2022/08/08 10:32
- Excel(エクセル) エクセルで2つの表を比較して、文字列が同じだが、その行のある値が違うものを抽出したい 1 2022/10/06 21:48
- Excel(エクセル) エクセルの書式設定の表示形式で設定した文字を文字列としてコピーしたい 1 2022/12/21 10:41
- Excel(エクセル) 【EXCEL】=セル&セルが上手く表示できない。 7 2022/09/04 21:32
- C言語・C++・C# いまc言語の標準ライブラリ文字列を勉強しているのですがいまいちわかりません。 strcmpとmemc 5 2023/07/04 15:34
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Excel(エクセル) エクセル 別シートの各セルそれぞれの比率を計算したい 4 2023/08/05 15:20
- Excel(エクセル) Excelについて▶あるセルに文字を入力すると、別のセルに色がつく(条件付き書式) 1 2022/03/27 16:43
- Visual Basic(VBA) ExcelVBAでDo Until loopのネスト、IF文を使って一致する物と一致しない物としたい 11 2022/12/24 17:46
- Excel(エクセル) 一つのセルに複数の関数を入力する方法 4 2022/09/30 13:42
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで特定のセルに表示...
-
エクセル 数字をすべて○などの...
-
太字に設定されているセルの個...
-
Excelで挿入した図をセルの中央...
-
現在のセルの位置を返す関数は...
-
Excel内での検索結果をシート...
-
Excelでセルをクリックす...
-
エクセルでPDFリンクを大量...
-
フォントの色を指定して削除出...
-
クリックすると文章が表示され...
-
Excel ハイパーリンクのURLを別...
-
Excelで、図形内の文字をセルに...
-
セルがクリックされた回数をカ...
-
excelで セルの移動時に...
-
エクセルでの検索ボックスの作...
-
EXCELのセルや文字色の反映
-
エクセルでページ数をあるセル...
-
エクセル シート保護された共...
-
マクロを実行すると画像がズレ...
-
エクセルマクロ 赤色の文字を検...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで特定のセルに表示...
-
エクセル 数字をすべて○などの...
-
Excel内での検索結果をシート...
-
クリックすると文章が表示され...
-
Excelでセルをクリックす...
-
マクロを実行すると画像がズレ...
-
太字に設定されているセルの個...
-
Excelで、図形内の文字をセルに...
-
Excelで挿入した図をセルの中央...
-
フォントの色を指定して削除出...
-
Excel ハイパーリンクのURLを別...
-
エクセルでPDFリンクを大量...
-
エクセル 未入力セルがあると...
-
現在のセルの位置を返す関数は...
-
VBA 見つからなかった時の処理
-
EXCELのセルや文字色の反映
-
【EXCEL】先週の月曜日の日付を...
-
セルの値が変ると自動でマクロ...
-
エクセルでセルをダブルクリッ...
-
アポストロフィーの一括挿入 ...
おすすめ情報