エクセルの値を含む範囲指定方法

ExcelのC列(赤枠)に対象の日付があれば、
A1~C14(青枠)の範囲を抽出するようにしたくおもってます。
前提条件として、行は14行づつの固定です。

煮詰まってしまい、先に進まないので、
わかる方がいらっしゃればご教授お願いしたいです。


テスト.xls (26。5 キロバイト)

追記
B列の記号番号がわかるとありがたいです。

「対象日付がある14行をだけを持ってくる」
のではなく、

「全体をDataTable型で持ってきてから」、
対象日付がある列位置を走査し、
その後必要な行だけにする。

または必要な行だけにしないまでも、参照すべきA列、B列の値を参照する

ってのではどうでしょう?

返信遅くなりすみません。
確かに14行という指定をするより効率がいいと思います。

ただ、A列B列をどう参照したらいいか、、、
ご連絡の前に教えて頂いた内容で、
方法を考えたんですが、中々いい案が浮かばず、
もしご存知でしたらご教示頂きたく思います。

「範囲を読み込む」アクティビティで、シート名と範囲を指定して読み込みます。
範囲には"A1"を指定すると、A1セルから最後のセルまでを一気に読んでくれます。

ヘッダーを追加した所ですが、タイトルになりそうな行がないので、ヘッダーは無しとします。

すると、DataTable型の列情報には、Column0、Column1、Column2のようにユニークな列名が設定されます。

さて、今読み込んだDataTable型の領域の変数名をDTとしますね。

C列の該当日付を走査するのに、For(行単位)アクティビティを使います。
標準では、Rowと言う変数が1行分を示します。

1行分のC列を参照するには、
Row.Item(2)
と言う風にします。

あれ?Column2ではないの?と思われるかもしれませんが、
古い版数のアクティビティだと指定方法で、Column1から始まる場合もあるので、
この説明では左からの0からの番号指定にしています。

※とりあえず列名指定でも、左からの0からの番号指定でも行けます。

A列、B列は同じように、
Row.Item(0) ←A列
Row.Item(1) ←B列
という風にします。

※試しに、Forの中で、一行書き込みアクティビティで
Row.Item(2).ToString & “,” & Row.Item(0).ToString
って感じで、ダンプしてみましょう。

最初はちょっと戸惑うかもしれないDataTable型ですが、
慣れるととっても使いやすい型ですので、是非覚えていきましょう!

すごく分かり易い説明ありがとうございます!
DataTable型しっかり覚えます!

そうそう。書き漏らしていました。

For(行単位)アクティビティを使った時、行はRow変数で表現され、
そのRowが何行目か?って問題になると思います。

・行位置を示す変数を用意し、Forの前でその変数を初期化。
・For(行単位)の繰り返しの最後で、代入アクティビティで行位置を示す変数に+1する
のも手ですが、For(行単位)アクティビティのパラメタの下の方(自宅PCにはUiPATHをまだインストールしていない(^_^))の出力の辺りで添え字を指定できる場所があります。

たとえばixと言うようなInt32型の変数を設定しておくと、For(行単位)アクティビティが自動的にカウントアップしてくれます。

これを利用して、C列の日付が合致した行位置を知れば、その行位置の変数を14で割って、商の値を利用して、本来必要な14行の固まりとする行範囲を計算できますね。

追記までして頂きありがとうございます!
感謝の言葉がこれ以上見つかりませんが、
少しでもレベルUPできるように、日々精進します。

かなり無理やりですが、
自身の参考までに作成したので、自分用にUPしました。

Main.xaml (9。8 キロバイト)
テスト.xls (40 キロバイト

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.