
【やりたい事】
Q1.コードを実行し、C1-C3セルに、数式を以下のように入れたいです
現在は、=EXACT(A1,B1) が3つのセルに入っています
C1セル⇒=EXACT(A1,B1)
C2セル⇒=EXACT(A2,B2)
C3セル⇒=EXACT(A3,B3)
Q2.最終行の宣言におけるデータ型は、Dim surveydatalastrow As Integerで
あっていますか?
※Integer 整数型 -32,768 ~ 32,767
上記2つについて、ご存じの方、ご指導お願いします
【コード】
Sub exact関数()
Dim surveydatalastrow As Integer
lastrow = Cells(Rows.Count, 2).End(xlUp).Row
For i = 1 To lastrow
If Cells(i, 2) <> "" Then
Cells(i, 3).Formula = "=EXACT(A1,B1)"
End If
Next i
End Sub
No.2ベストアンサー
- 回答日時:
以下のコードをご覧ください。
Option Explicit
Sub exact関数()
Dim lastrow As Long
lastrow = Cells(Rows.Count, 2).End(xlUp).Row
'Cells(1, "C").Resize(lastrow).Formula = "=IF(B1="""","""",EXACT(A1,B1))" 'fujillinさんの回答と同等
Range("C1:C" & lastrow).Formula = "=IF(B1="""","""",EXACT(A1,B1))" '別の表記方法(スピルなし)
'Cells(1, 3).Formula2 = "=IF(B1:B" & lastrow & "="""","""",EXACT(A1:A" & lastrow & ",B1:B" & lastrow & "))" 'スピルあり
End Sub
「Option Explicit」 は、VBAにおいて変数の宣言を強制するためのオプションステートメントです。これをモジュールの先頭に記述すると、すべての変数を「Dim」などで明示的に宣言しないと使用できなくなります。宣言漏れや、タイプミスによるバグを防ぐことができます。
ループ処理を回して、結果を表示したら0になってしまい、首をひねったら、原因は変数名をタイプミスして「空の変数」を表示していたというような笑い話を防げます。
失礼な言い方になるかもしれませんが、コードを書き始めの方は「モジュールの先頭にOption Explicit記述する」という癖をつけることをお勧めしたいと思います。
前置きはさておき、ご質問者のコードはB列の値が空白以外なら、A列とB列のEXACT関数による文字列比較結果をC列に表示するというものだと推測しました。
上記コードでは元々ご質問者のコードにあったFOR~NEXTの部分を削除しています。
その上で、B列が空白のときはC列には空白を表示するという数式に変えて、対象範囲に一気に適用する処理にしています。
方法を3通り、お示ししており、
fujillinさんの回答と同等のコード
Cells(1, "C").Resize(lastrow).Formula = "=IF(B1="""","""",EXACT(A1,B1))"
別の表記方法(スピルなし) のコード
Range("C1:C" & lastrow).Formula = "=IF(B1="""","""",EXACT(A1,B1))"
別の方法(スピルあり) のコード
Cells(1, 3).Formula2 = "=IF(B1:B" & lastrow & "="""","""",EXACT(A1:A" & lastrow & ",B1:B" & lastrow & "))"
最初にお示ししたコードは、上記のうち2つをコメントアウトしてありますので、コメントアウトを変更してみて、お好みのものを選択してください。
No.1
- 回答日時:
こんにちは
最終的に表示させたい内容が正確には読み取れませんけれど・・
複数の連続セルに関数式を設定するのなら、まとめて入力したほうが簡単ですし、処理も速いはずです。
具体的には(式を少し変えていますが)、
Cells(1,3).Resize(lastrow)..Formula = "=IF(B1="""","""",EXACT(A1,B1))"
みたいな感じです。
>最終行の宣言におけるデータ型は、Dim surveydatalastrow As Integer
>であっていますか?
ご提示のコードの範囲内では、変数surveydatalastrowは使用していないようです。
ですので、宣言する必要はありません。
それでも、宣言したいのであれば、宣言のみ(=使用していない)なので、どのような宣言でも問題はありません。
一方で、使っている変数(=i および lastlow)は宣言していませんよね?
宣言を考えるのなら、そちらの方がまず先でしょう。
なお、行数を変数に入れる場合、現在のエクセルの最大行数は1048576行なので、Integer宣言だとオーバーフローする可能性があります。
Long型にしておくのが安全でしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 1 2024/02/03 22:51
- Visual Basic(VBA) VBA listBoxについて 2 2024/03/26 16:14
- Visual Basic(VBA) VBAコードが作動しません。修正したいのですが何処に原因かあるか教えて下さい。 1 2024/01/08 16:23
- Visual Basic(VBA) Sub 分けてソートして貼り付ける() Dim srcSheet As Worksheet Dim 6 2023/08/04 19:57
- Excel(エクセル) 3つのマクロを連続実行の中で、1つ目のマクロ要件を満たさなかったら、マクロ2・3を実行しない為には 1 2023/10/15 13:42
- Visual Basic(VBA) A列B列C列 3 2023/04/26 18:11
- Visual Basic(VBA) VBAコードについて 2 2024/03/10 12:41
- Visual Basic(VBA) Excel VBA 文字列のセルを反映させたいです 2 2024/02/24 00:06
- Excel(エクセル) 【マクロ】毎回、ファイル名が変わるファイルへの 文字列の転記 2 2024/05/02 14:17
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
このQ&Aを見た人はこんなQ&Aも見ています
-
一回も披露したことのない豆知識
あなたの「一回も披露したことのない豆知識」を教えてください。
-
泣きながら食べたご飯の思い出
泣きながら食べたご飯の思い出を教えてください。
-
性格いい人が優勝
できるだけ性格いい人になって回答をお願いします。
-
スタッフと宿泊客が全員斜め上を行くホテルのレビュー
スタッフも宿泊客も、一流を通り越して全員斜め上なホテルのレビューにありがちな内容を教えて下さい
-
かっこよく答えてください!!
あなたは今にも別れそうなカップルの彼女の恋愛相談に乗っています。
-
【マクロ】Call関数で呼び出した場合、共通の変数宣言は、省略できますか?
Excel(エクセル)
-
【マクロ】データ移動について代替案(コード)or助言を下さい
Excel(エクセル)
-
Excel関数の解決方法
Excel(エクセル)
-
-
4
エクセルの設定、下へスクロールすると表のヘッダ項目がシートの列番号の部分に表示される
Excel(エクセル)
-
5
【マクロ】データ移動について代替案(コード)or助言を下さい
Excel(エクセル)
-
6
Excel いい方法教えてください。
Excel(エクセル)
-
7
以下のプログラムの実行結果はどうなると思いますか? その理由も教えてください。
Visual Basic(VBA)
-
8
エクセルの設定、特定の列以降が無いワークシートを作れますか
Excel(エクセル)
-
9
別のシートの指定列の最終行を返す関数の式を教えて下さい。
Excel(エクセル)
-
10
Excelの関数を教えて下さい。
Excel(エクセル)
-
11
【マクロ】シート追加時に同じ名前のシートがあり、エラーの場合、メッセージを出し、次のコードへ進むには
Excel(エクセル)
-
12
自動的に日付入力 応用
Excel(エクセル)
-
13
システムファイルについて
Excel(エクセル)
-
14
【マクロ】1回目の実行後、2回目からは実行できないようにはできますか?
Excel(エクセル)
-
15
【マクロ】参照渡しについて。受け取る変数の名前を変更すると、動かなくなる
Excel(エクセル)
-
16
Excelでの文字入力について
Excel(エクセル)
-
17
日付がバラバラ
Excel(エクセル)
-
18
複数条件の合計を求める数式を教えてください。
Excel(エクセル)
-
19
ExcelのIF関数との組み合わせの相談
Excel(エクセル)
-
20
【マクロ】参照渡しとモジュールレベル変数 どっちが よく使うものですか?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelのチェックボックスについ...
-
【マクロ】上のデータに下のデ...
-
エクセルで教えてください。 例...
-
2枚のエクセル表で数字をマッチ...
-
Excelファイルを開くと私だけVA...
-
エクセルで、一部のセルだけ固...
-
【オートフィルター】3つのシ...
-
セルの左に余白を付ける
-
マクロ セルを右クリックした時...
-
【Excel】エクセルで書式なしコ...
-
エクセルのセルに画像は埋め込...
-
弥生青色申告オンライン .csvの...
-
エクセルで、数字の下4桁の0を...
-
エクセル 月間シフト表で曜日ご...
-
ExcelのIF関数との組み合わせの...
-
1.5ヶ月分の費用按分 エクセル関数
-
クラスモジュールにあるプロシ...
-
エクセルオートサムでセル選択...
-
Excelで作成した出欠表から日付...
-
Excelでの文字入力について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの設定、下へスクロー...
-
別のシートの指定列の最終行を...
-
【マクロ】シート追加時に同じ...
-
Excelファイルを開くと私だけVA...
-
Excelの関数を教えて下さい。
-
マクロを実行すると、セル範囲...
-
エクセルの設定、特定の列以降...
-
Excelの条件付書式について教え...
-
Excelで作成した出欠表から日付...
-
Excelでの文字入力について
-
Excel 日付の表示が直せません...
-
Excel関数の解決方法
-
システムファイルについて
-
自動的に日付入力 応用
-
UNIQUE関数の代用
-
エクセル内に読み込んが画像の...
-
勤務外時間を出す表が作りたい
-
Excel 偶数月の15日(土日祝...
-
【マクロ】Call関数で呼び出し...
-
【マクロ】1回目の実行後、2...
おすすめ情報