アプリ版:「スタンプのみでお礼する」機能のリリースについて

表のAC5からAV262に1~2桁の数字がランダムに入っており、AB265からAB273にも1~2桁の数字がランダムに入っています。
AC5からAV262の数字がAB265からAB273の数字のどれかと同じかをいちセルごとに検索して、その結果をAC265からAV522にそれぞれ出力するのに、
AC265=countIf(AB265:AB273,AC5)の様にしてAC265からAV522に出力していましたが、
これをVBAのDo Whileで行おうとしたのですが、コンパイルエラーとかオブジェクト定義や修飾子の間違いとなり出来ません。
RangeやClellsを使い分けても出来ませんでした、どなたか宜しくお願いします。
(ABは713,ACは714,AVは733です)

A 回答 (3件)

No.1です。



閉じ括弧が足りないですね。
一部書き直し含め、

Do While t <= 522
Cells(t, r).Value = WorksheetFunction.CountIf(Range("AB265:AB273"), Cells(s, t).Value)
r = r + 1
t = t + 1
s = s + 1
Loop

こうかな?
    • good
    • 0
この回答へのお礼

ありがとう御座います
私の説明が稚拙で申し訳ありません
早速、やってみます

お礼日時:2021/10/28 18:56

こんにちは



>これをVBAのDo Whileで行おうとしたのですが、コンパイルエラーとか~
想像するところ、手作業とは違う方法で実現しようとしているのだと思いますが・・・
セル範囲が固定のようなので、手操作そのままの方法でも簡単に実現できます。
マクロの記録で行っても良いのですが、あまり良い記録はできないと思いますので、直接例示しておくと、

Range("AC265:AV522").FormulaLocal = "=COUNTIF($AB$265:$AB$273,AC5)"
という実質1行で、セル範囲に数式を入力した状態になります。
(ご質問のなさりたいことは、こういうことであろうと解釈しました)

もしも、結果を数式としてではなく「値として固定」したいのであれば。
Range("AC265:AV522").Value = Range("AC265:AV522").Value
とすることで可能です。

※ 最後の一文(=以下)の意味が不明なので、そちらは無視しました。
>(ABは713,ACは714,AVは733です)
    • good
    • 0
この回答へのお礼

ありがとう御座います
まるっきりの初心者なので説明が下手ですみません
下記の様にDo Whileの中にもう一つ入れてみたのですが、それが上手くいきません、説明不足ですみません
Do While r <= 733
Worksheets("Sheet1").Cells(r, 3).Value = Worksheets("Sheet1").Cells(4, I).Value
Worksheets("Sheet1").Range(Cells(5, I), Cells(262, I)).Value = Worksheets("Sheet1").Range(Cells(5, 17), Cells(262, 17)).Value

t = 265

Do While t <= 522
Cells(t, r) = WorksheetFunction.CountIf(Range(Cells(265, 713), Cells(273, 713)), Cells(s, t))

t = t + 1
s = s + 1
Loop

I = I + 1
r = r + 1
Loop

お礼日時:2021/10/28 18:50

コードを提示された方が早いかも?


”数式”として代入させたのか”値”として代入させたかったのかでも違いますし。
    • good
    • 0
この回答へのお礼

Do While t <= 522
Cells(t, r).Value = WorksheetFunction.CountIf(Range("AB265:AB273"), Range(Cells(s, t)).Value
r = r + 1
t = t + 1
s = s + 1
Loop

rは714列目から tは265行目から sはAC5(5行目714列目)

お礼日時:2021/10/28 18:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!