質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

623閲覧

文字列をVBAで見つける方法を知りたい。

ma2hiro

総合スコア159

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2021/11/15 02:55

編集2021/11/15 03:09

お世話になっております。
基本的な質問失礼いたします。

今現在 エクセル上で今期の行を知りたくググった
【Excel VBA入門】Findメソッドで条件に一致するセルを検索する方法 – Valmore
に記載してあるように(

findの基本的な使い方を解説してきました。注意点でも書きましたが、Excelファイル固有の検索設定に影響を受ける点に要注意。これを知らないと意図しない検索条件になってしまいます。

が気になるので出来ればFindは使用したくない……)

VBA

1 Set wb = Workbooks.Open(fname) 2 With Worksheets("利益") 3 4 Dim jinendoGyou() As Integer 'の**期を探す 5 Dim searchKi As Range 6 With Worksheets("利益").Range("B2:B79") 7 Set searchKi = .Find("year-1964" & "期") 8 End With 9 End With

とB列に次年度の期が書いてある所を見つけたいので
上記のようにやってみたのですが

VBA

1 Set searchKi = .Find("year-1984" & "期")

で2021-1964 つまり ”37期” というセルを見つけたいのですが
Nothingとなってしまいます……
引き算の結果をFindする方法は上記ではないのでしょうか?

上記問い合わせのついでで申し訳ないのですが
jinendoGyou の配列の中に37期と表記してある行数を格納する方法も
合わせてご教授頂け無いでしょうか?

大変基本的な事で申し訳ないのですが
何か情報をお持ちな方はコメント頂けますと嬉しく思います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

yearというのが変数で2021が格納されているなら、

vba

1Set searchKi = .Find((Year-1964) & "期")

2021というのか今年の西暦という意味なら、下記のようなに。

vba

1Set searchKi = .Find((Year(Date)-1964) & "期")

追記

その期の行数のカウント方法もご教授頂けないでしょうか?

Findメソッドを使うなら、検索セルが最初のセルに戻るまでループするという方法になります。
(WEB検索すればサンプルコードは見つかるでしょう。)
ただ、行数を取得するだけなら、CountIfを使えばいいでしょう。

vba

1Dim Gyousu As Long 2Gyousu = WorksheetFunction.CountIf(Range("A1:A6"),(Year-1964) & "期")

投稿2021/11/15 03:10

編集2021/11/15 03:41
hatena19

総合スコア34075

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ma2hiro

2021/11/15 03:17 編集

変数です。 変数の計算は()との事ありがとうございました。 出来れば後半の その期の行数のカウント方法もご教授頂けないでしょうか? なんという事語句でググれば良いのか不明なのです……
ma2hiro

2021/11/15 03:43

ありがとうございます。 Countifだと一つしか見つけられないので複数見つけたかったのですが サンプルコードを探して実装してみます。 本当にありがとうございました。
hatena19

2021/11/15 03:49

> Countifだと一つしか見つけられないので複数見つけたかったのですが 例えば、37期の値が3つあればCountifは3という結果を返します。 何を複数見つけたいのでしょうか。 例えば、35期の行数、36期の行数、37期の行数 というようなことでしょうか。 もし、そういうことなら、質問のコードに、year変数に年度を格納するループ処理の部分も含めて提示してください。
hatena19

2021/11/15 03:51

ひょっとすると、行数ではなく、37期という値のセルの行番号を取得したいという意味なのかな?
ma2hiro

2021/11/16 01:51

仰るように”37期”との値のセルの行番号を取得したいのです…… 説明不足失礼いたしました。 GetArrayGyouみたいな関数があれば良いと思っております。
hatena19

2021/11/16 02:18 編集

質問中に「出来ればFindは使用したくない」とありますが、私も同感です。 方法としては、 Match関数を使ってループするか、 AutoFilterで絞り込んで、SpecialCells(xlCellTypeVisible)で表示されているセルを取得するか、 などでしょうか。 また、行番号を取得して、そのあとどうするのでしょうか。対象のセルに対して何か処理をしたりするなら、行番号ではなくRangeを格納した方がいいと思います。 その辺も含めて、新規に質問を立て直してはどうでしょうか。
ma2hiro

2021/11/16 02:57

度々ありがとうございます。 新規で立てましたのでお目通し頂けますと嬉しく思います。
guest

0

"year-1964"

だとそういう文字列になってます。引き算されません。

以下でどうでしょう

vba

1.Find((year-1964) & "期")

投稿2021/11/15 03:09

編集2021/11/15 03:11
m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ma2hiro

2021/11/15 03:15

ありがとうございます。 VBAだと変数の計算は()でくくるとやってくれるのですねっ できれば後半の ``` jinendoGyou の配列の中に37期と表記してある行数を格納する方法も 合わせてご教授頂け無いでしょうか? ``` というのは簡単に実装する方法は無いかどうかも合わせてご教授頂けますと嬉しく思います。
m.ts10806

2021/11/15 03:43

要件別なら質問別にしたほうが良いです。
ma2hiro

2021/11/15 03:44

仰る通りですね。 失礼しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問