- ベストアンサー
Excel2007の文字列比較の方法について
Excel2007の文字列比較の方法について とあるExcelシートがあり、A列、B列があるとします。 値は以下のとおりです。 A B ------ tom tom ema ben sin ken ここでA列を軸にB列を1行目から精査し、一致する値があれば、 A列の値はxxxxにしたいと思います。 A B ------ xxxxtom ema ben sin ken このロジックを実現するには、 マクロを使用が必要でしょうか?。 またどういった関数などを使用すれば良いでしょうか。 アドバイスをお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは A B ------ 1 tom tom 2 ema ben 3 sin ken 上記のようなシート(Sheet1)があるとして、この場合、もとのシートを残すやり方 として、以下のようなやり方でどうですか? 左端の番号はEXCELの行番号です。 1.別のシートを作成する。(Sheet2) 2.Sheet2のA列1行目に次の式を入れる。 =IF(Sheet1!A1=Sheet1!B1,"xxx",Sheet1!A1) 3.Sheet2のB列1行目に次の式を入れる。 =Sheet1!B1 4.A1からB1を範囲指定してコピーする。 5.A2から最終行のAxまで選択してペーストする。 こうすると、別のシートではありますが、A列がB列同じ行の内容と同じ場合に"XXX"と なった状態を再現できます。 ひとつのセルにしたければ、A列に =IF(Sheet1!A1=Sheet1!B1,"xxx"&Sheet1!B1,Sheet1!A1&Sheet1!B1) といれて、最終行までコピーする手もあります。 もし、最初のシートの上に一括して書き換えるほうが効率がよいなら、No.1様の回答を 参考にしてもらえばよいと思います。 ご参考まで
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17070)
例えばA1のセルの値を使って、B列に同じものが在るか聞いて、あればA1の値を変化させる、ような式をA1に入れることは出来ません。 エクセルの関数の基本です。良く勉強してください。 作業列として別列を使い、そこに式を入れるなら出来ます。 そしてA列へ「値」を(式を消して)貼り付けて戻すとか。 ーー だから質問「通り」のことはVBAでしか出来ません。 VBAはA1の値で判断して、何か処理をして、A1セルに戻すと言うことが、出来ます。 Sub test01() d = Range("A65536").End(xlUp).Row On Error GoTo p1 For i = 2 To d x = Application.Match(Cells(i, "A"), Range("B1:B100"), 0) If IsError(x) Then GoTo p1 Cells(i, "A") = "xxxx" p1: Next i End Sub Match関数を使いましたがFindやB列全行を対象に比較する方法などあります。 MatchやFindは http://www.keep-on.com/excelyou/2000lng4/200010/00100295.txt のような難しい点があります。
お礼
「A1に式を入れること」など一言も書いていません。 要件の解釈を間違えている上に、「良く勉強してください」とは ずいぶんな言い様だと思いました。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! もしかしてこんな感じのことですかね? データはA・B列とも2行目からあるとしています。 操作したいSheet見出し上で右クリック → コードの表示 を選択し、↓のコードをコピー&ペーストして マクロを実行してみてください。 Sub test() Dim i, j As Long For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row j = Cells(Rows.Count, 2).End(xlUp).Row If WorksheetFunction.CountIf(Range("B2:B" & j), Cells(i, 1)) Then Cells(i, 1) = "XXXX" End If Next i End Sub 以上、参考になればよいのですが 外していたらごめんなさいね。m(__)m
お礼
有難うございます。 参考になりました。
お礼
有難うございます。 参考になりました。