ExcelのC列(赤枠)に対象の日付があれば、
A1~C14(青枠)の範囲を抽出するようにしたくおもってます。
前提条件として、行は14行づつの固定です。
煮詰まってしまい、先に進まないので、
わかる方がいらっしゃればご教授お願いしたいです。
テスト.xls (26。5 キロバイト)
追記
B列の記号番号がわかるとありがたいです。
ExcelのC列(赤枠)に対象の日付があれば、
A1~C14(青枠)の範囲を抽出するようにしたくおもってます。
前提条件として、行は14行づつの固定です。
煮詰まってしまい、先に進まないので、
わかる方がいらっしゃればご教授お願いしたいです。
追記
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できるように、日々精進します。