
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
No.1・3です。
>With Worksheets("Sheet2").Range("B2:B5000")
>⇒ここのデータのある最終行までとする場合どうすればよいのでしょうか。
今回の数式に関しては参照先の範囲指定が必要になります。
Sheet1の最終行が判らないので、列全体を対象としても良いのですが、
それでは計算速度がかなり落ちてしまうため、とりあえずSheet1の20000行までの範囲としてみました。
(ワークシート関数の数式をそのまま使用する場合、セル番地が必要になりますので・・・)
※ Sheet1のデータは20000行まであってもなくても問題ありません。
Sub Sample4()
Dim lastRow As Long
With Worksheets("Sheet2")
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row '//←Sheet2のA列最終行
With Range(.Cells(2, "B"), .Cells(lastRow, "B"))
.Formula = "=IF(COUNTIFS(Sheet1!A$2:A$20000,A2,Sheet1!F$2:F$20000,""<>""),"""",""ひとつもない"")"
.Value = .Value
End With
End With
End Sub
こんな感じではどうでしょうか?m(_ _)m
No.3
- 回答日時:
No.1です。
補足の関数をそのままコードにするだけですが
文字列には通常の関数と異なり、ダブルクォーテーションを追加してやる必要があります。
Sub Samle2()
With Worksheets("Sheet2").Range("B2:B5000")
.Formula = "=IF(SUMPRODUCT((Sheet1!A$2:A$5000=A2)*(Sheet1!F$2:F$5000<>""""))=0,""ひとつもない"","""")"
.Value = .Value
End With
End Sub
※ Excel2013をお使いだというコトですので、計算速度が遅くなる
SUMPRODUCT関数(配列数式)ではなくCOUNTIFS関数で対応できると思います。
Sub Sample3()
With Worksheets("Sheet2").Range("B2:B5000")
.Formula = "=IF(COUNTIFS(Sheet1!A$2:A$5000,A2,Sheet1!F$2:F$5000,""<>""),"""",""ひとつもない"")"
.Value = .Value
End With
End Sub
といった感じの方が速いと思います。
※ 数式がそのまま残っても良いのであれば
Sub Sample4()
Worksheets("Sheet2").Range("B2:B5000").Formula = _
"=IF(COUNTIFS(Sheet1!A$2:A$5000,A2,Sheet1!F$2:F$5000,""<>""),"""",""ひとつもない"")"
End Sub
ぐらいでOKだと思います。m(_ _)m
No.2
- 回答日時:
そのまま、VBAのWorksheetfunctionを使ってはどうでしょうか
Sheet2の名前のタブを右クリック
コードの表示をクリック
VBエディターが起動したら
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Column = 1 Then
Target.Offset(0, 1).Value = WorksheetFunction.VLookup(Target.Value, Sheets("Sheet1").Columns("A:B"), 2, False)
End If
End Sub
を張り付けて閉じる。
A列に、何か入れるとB列に答えが出ると思います。
No.1
- 回答日時:
こんにちは!
質問の上側がSheet1で下側がSheet2とし、
両Sheetとも1行目は項目行で、データは2行目以降にあるとします。
いかにもVBAらしい感じとしては
Sub Sample1()
Dim i As Long, c As Range, wS As Worksheet
Set wS = Worksheets("Sheet1")
With Worksheets("Sheet2")
For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row
Set c = wS.Range("A:A").Find(what:=.Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
.Cells(i, "B") = c.Offset(, 1)
End If
Next i
End With
End Sub
こんな感じでしょうかね。
VBAでもワークシート関数がそのまま利用できますので、↓の方が簡単かもしれません。
Sub Sample2()
Dim lastRow As Long
With Worksheets("Sheet2")
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
With Range(.Cells(2, "B"), .Cells(lastRow, "B"))
.Formula = "=IF(COUNTIF(Sheet1!A:A,A2),VLOOKUP(A2,Sheet1!A:B,2,FALSE),"""")"
.Value = .Value
End With
End With
End Sub
こんな感じではどうでしょうか?m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数のExcelファイルをマージす...
-
VBAでCOPYを繰り返すと、処理が...
-
【ExcelVBA】5万行以上のデー...
-
エクセルのマクロについて教え...
-
ダブルクリックで貼り付けた画...
-
Excelマクロで使うVBAコードを...
-
Excelのマクロについて教えてく...
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
-
vb.net(vs2022)のtextboxのデザ...
-
エクセルのVBAコードと数式につ...
-
【マクロ】変数を使った、文字...
-
ExcelVBAでパワポを操作したい
-
testファイル内にある複数のpng...
-
(EXCEL超初心者)EXCELの関数(ま...
-
Excelのマクロについて教えてく...
-
算術演算子「¥」の意味について
-
[VB.net] ボタン(Flat)のEnable...
-
【ExcelVBA】値を変更しながら...
-
【マクロ】売上一覧YYYYMMDDHHS...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Vba Array関数について教えてく...
-
VBAでCOPYを繰り返すと、処理が...
-
【ExcelVBA】5万行以上のデー...
-
【マクロ】シートの変数へ入れ...
-
vbsでのwebフォームへの入力制限?
-
エクセルのマクロについて教え...
-
【マクロ】並び替えの範囲が、...
-
Vba セルの4辺について罫線が有...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
VBAでユーザーフォームを指定回...
-
【マクロ】開いているブックの...
-
エクセルの改行について
-
vb.net(vs2022)のtextboxのデザ...
-
エクセルのVBAコードと数式につ...
-
算術演算子「¥」の意味について
-
Excelのマクロについて教えてく...
-
改行文字「vbCrLf」とは
-
ワードの図形にマクロを登録で...
-
VBAの「To」という語句について
-
【マクロ】変数を使った、文字...
おすすめ情報
ワークシート関数がものすごく早いですね!
この質問から若干ずれてしまうのですが、
=IF(SUMPRODUCT((Sheet1!A$2:A$5000=A2)*(Sheet1!F$2:F$5000<>""))=0,"ひとつもない","")
⇒Sheet1のA列のみかんがSheet2のA列のみかん でかつ Sheet1のF列が空白でないものを抽出
したいのです。
このIF関数とサムプロダクト関数の組み合わせをこのVBAで使用したいのですが、やりかたありますか。
迅速な対応ありがとうございます。
下記のサンプル3で
With Worksheets("Sheet2").Range("B2:B5000")
⇒ここのデータのある最終行までとする場合どうすればよいのでしょうか。
Sub Sample3()
With Worksheets("Sheet2").Range("B2:B5000")
.Formula = "=IF(COUNTIFS(Sheet1!A$2:A$5000,A2,Sheet1!F$2:F$5000,""<>""),"""",""ひとつもない"")"
.Value = .Value
End With
End Sub