
.
excelの一つの行に、仮にA行にデータがずらりと並んでいます。
そのデータの並びのうち、同じデータが2つ以上並んでいる部分を検出したい。
それは関数EXACT(文字列,文字列)を使えばよいですね。
=EXACT(A1,A2) とB1セル(じゃなくても良いか)に入力して、コピーしてB2セル以下にだああああっとペーストすれば良いですね。簡単です。
然しこれをシートじゃなく、VBAでやりたいのですが、=EXACT(セル番号,セル番号)のセル番号の指定の仕方が分かりません。
ご教示願います。
よろしくお願いいたします。
以上
No.1ベストアンサー
- 回答日時:
こんにちは
例えばB1:B10に入力する場合なら、
Range("B1:B10").FormulaLocal = "=EXACT(A1,A2)"
で良いです。
(アドレス変換はエクセルがやってくれます)
あるいは、R1C1形式の式にしておけば、同じ式ですみますね。
fujillinさん、ありがとうございます。
上記でできることは分かったのですが、困ったことがありまして。
一覧表からカードを作るプログラムを作っているのですが、作るカードの方で、EXACTによる比較が必用なのですが、その比較する縦に並んだデータは、縦に結合したセルなのです。
なので実行すると、1回の比較ごとに「セルを結合すると、左上の値のみが保持され、他のセルの値は破棄されます」というダイアログボックスが出て、[OK]と[キャンセル]のボタンがあり[OK]ボタンを押さないと先に進めません。カード数が500枚なら500回[OK]ボタンを押さないと先に進めません。
これでは自動になりません。
然し、これも一工夫で何とかなるかな?と考えております。
一工夫してみます。
有り難うございました。
No.3
- 回答日時:
No1です
>なので実行すると、1回の比較ごとに「セルを結合すると、左上の値のみが
>保持され、他のセルの値は破棄されます」というダイアログボックスが出て~
どういう処理をしているのか不明ですが、No1のコードでアラートが表示されることはないはずです。
ですので、他の処理でそのアラートが出ているものと推測します。
通常そのようなアラートが出るのは、「セルを結合させ」ようとした場合ですので、どこかでセルを結合させるような記述をしていないでしょうか?
アラートが出るのを防ぎたければ、アラート表示を停止させれば可能ですけれど、穴の開いた布にパッチをあてて回るようなものなので、応急処置は別として、初めからきちんと整理した処理を考えるべきでしょう。
ついでながら、そもそもになってしまいますが・・・
何をなさろうとしているのかがわかりませんけれど、ご質問のような比較にわざわざEXACT関数をセルに設定するようなことも、普通はめったに行わないものと想像します。
なぜなら、VBAで直接セル値を比較すれば、それで事足りてしまうからです。
ご質問の方法だと、いずれはその結果を読みに行かなければならないので、「関数の設定」、「結果の読み取り」、「関数の削除(←必要な場合は)」と何通りもの処理を行わうことになり、返って手間が掛かることになりかねません。
ご質問内容が、「関数の設定の仕方」でしたので、そのままそちらで回答しましたけれど、「なさりたいこと」をきちんと整理した上でご提示いただければ、もう少し要領のよさそうな方法を回答できるかも知れません。
fujillinさん、再び有り難うございます。
私のやりたい事は、上下に隣り合っているセルの中身を比較して、その結果を表示したいだけです。
その為には、EXACT関数を使うしか方法が無いと思っていました。
>VBAで直接セル値を比較すれば、それで事足りてしまうからです。
数値以外ではそれは出来ないと思っていました。
やり方ご教示いただけますと幸いです、甘えすぎだとは思っておりますが。
ありがとうございました。
以上
No.2
- 回答日時:
(´・ω・`)?
A行?
ひょっとして、それは
A列
の間違いでしょうか。
・・・本題・・・
ワークシート関数のパラメータにセルを指定するやり方は共通です。
EXACT関数に限った話ではありません。
Exact( Range("A1") , Range("A2") )
Exact( Cells(1,1) , Cells(2,1) )
のようになります。
・・・余談・・・
ええと、繰り返し処理をする場合、VBAでは範囲を指定しなきゃならない。
For Next
などの構文を使って繰り返し処理をする必要があります。
For i=1 to 5
繰り返し処理する命令
Next
のようにして使います。(これは5回繰り返す例)
質問のケースでは変数「i」を使ってセルを指定することになるので
”Range" よりも ”Cells” のほうが便利でしょう。
・・・
もしも関数をセルに埋め込みたいのであれば、
Range.Formula
Cells.Formula
といったプロシージャを利用できます。
Range("B1").Formula = "=EXACT(A1:A2)"
Cells(1, 2).Formula = "=EXACT(A1:A2)"
のように文字列を指定して使います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
貼り付けで複数セルに貼り付けたい
-
【エクセル】IF関数 Aまたは...
-
数式を残したまま、別のセルに...
-
エクセルのセルの枠を超えて文...
-
対象セル内(複数)が埋まった...
-
Excel 例A(1+9) のように番地の...
-
エクセル オートフィルタで絞...
-
エクセルの一つのセルに複数の...
-
エクセルの書式設定の表示形式...
-
(Excel)数字記入セルの数値の後...
-
アニメの原画について
-
Excelでのコメント表示位置
-
EXCELで右詰の数値でセルを(左...
-
セルをクリック⇒そのセルに入力...
-
どなたかおねがいします。 1つ...
-
エクセル 保護/非保護混在セ...
-
公共建築工事 共通仮設費率 エ...
-
エクセルで指定したセルのどれ...
-
Excelで住所を2つ(町名迄と番...
-
Excelで、「特定のセル」に入力...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
貼り付けで複数セルに貼り付けたい
-
エクセルで指定したセルのどれ...
-
数式を残したまま、別のセルに...
-
Excel for Mac使用中ポインタが...
-
Excel 例A(1+9) のように番地の...
-
セルをクリック⇒そのセルに入力...
-
エクセルの書式設定の表示形式...
-
枠に収まらない文字を非表示に...
-
エクセル オートフィルタで絞...
-
対象セル内(複数)が埋まった...
-
【エクセル】IF関数 Aまたは...
-
(Excel)数字記入セルの数値の後...
-
エクセルのセルの枠を超えて文...
-
EXCEL VBA セルに既に入...
-
Excelでのコメント表示位置
-
公共建築工事 共通仮設費率 エ...
-
Excelで数式内の文字色を一部だ...
-
Excelで教えてください。 バー...
-
エクセルの一つのセルに複数の...
-
Excel2003 の『コメント』の編...
おすすめ情報