[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『貼り付け先にシートに特定の文字列を含む表が存在しない場合に表を貼り付けたい。』(道産子)
こんにちは。
貼り付け先のシートに文字列"A"を含む表が存在しないときに、文字列"A"を含む表を貼り付けるプログラムを書いたのですが、上手くいきません。
どなたかご教授お願いします。
コピー元シート:Sheet1
貼り付け先シート:Sheet2
(プログラム内容)
Dim LastRow As Long
Dim i As Long Dim count As Integer
//Sheet1のA列に文字列"A"を含む表があればカウント
LastRow = Worksheets("Sheet2").Cells(Rows.count, 1).End(xlUp).Row
For i = LastRow To 4 Step -1 count = WorksheetFunction.CountIf(Worksheets("Sheet2").Cells(i, "A").MergeArea, Value = "A") Next i
//A列に"A"を含む表がない場合、Sheet1から表をコピー
If count = 0 Then Worksheets("Sheet1").Range ("A3:R13").Copy
Worksheets("Sheet1").Select Worksheets("Sheet1").Range("A" & LastRow).Offset(1, 0).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False
End If
< 使用 Excel:Excel2019、使用 OS:Windows10 >
With Worksheets("Sheet2") count=WorksheetFunction.CountIf(.Range("A4",.Cells(LastRow,"A")),"*A*") End With
Countif関数の記述が間違っていると思いますが。
(tkit) 2020/05/26(火) 10:45
一つ確認したいのですが、今回はA列について特定の文字列がある場合にカウントすることに
なっていますが、Rangeの中身が"A4"となっているのはなぜですか?
ご伝授お願いします。
(道産子) 2020/05/26(火) 11:04
まず、前提として、Countif関数は、セル範囲の中から該当するセルの数を返します。 ですので、セル範囲を張り付けてあるコードから探しました。
>LastRow = Worksheets("Sheet2").Cells(Rows.count, 1).End(xlUp).Row ↑ LastRowはA列から求めていますよね。
>For i = LastRow To 4 Step -1 count = WorksheetFunction.CountIf(Worksheets("Sheet2").Cells(i, "A").MergeArea, Value = "A") Next i
から、A列のLastRow行から、マイナス方向にA列の4行まで行おうとしていますので、 範囲としてはA4からCells(LastRow,"A")の範囲になります。
Range("A4:A"&LastRow)でもいいですね。
(tkit) 2020/05/26(火) 11:22
(道産子) 2020/05/26(火) 11:37
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.