web-dev-qa-db-ja.com

VBAまたはマクロなしでExcelでループする方法は?

VBAまたはマクロがインストールされていないExcelで行のグループを反復(ループ)することはできますか? Googleは何も役に立たなかった。

=IF('testsheet'!$C$1 <= 99,'testsheet'!$A$1,"") &
IF('testsheet'!$C$2 <= 99, 'testsheet'!$A$2,"") &
IF('testsheet'!$C$3 <= 99, 'testsheet'!$A$3,"") &
... and so on through !$C$40, !$A$40 ...

現状では、各セルで上記のコードを40回繰り返す必要があり、コードを必要とする200を超えるセルがあります。 スニフ

私はPHP/SQLにはかなり長けていますが、Excelを学ぶだけです。

37
Jeff

数式の結果を取得する方法は、新しいシートから開始することです。

セルA1に式を入力します

=IF('testsheet'!C1 <= 99,'testsheet'!A1,"") 

そのセルを行40にコピーしますセルB1に式を入力します

=A1

セルB2に式を入力します

=B1 & A2

そのセルを行40までコピーします。

必要な値は、行40のその列にあります。

本当に必要な答えではありませんが、範囲を取り込んで計算を行うカスタム数式を作成することなく、Excelを賢く処理するための最速の方法です(これはもっと楽しいことです)。

18
Nat

私は似たようなものを探していました:

奇数行ごとに合計したい。

SUMIFには、sum fromまでの範囲と条件を考慮までの2つの範囲があります。

SUMIF(B1:B1000,1、A1:A1000)

この関数は、B範囲のセルが「= 1」であるかどうかを考慮し、ある場合にのみ、対応するAセルを合計します。

「= 1」を取得してBの範囲に戻すには、これをBに入れます。

= MOD(ROWNUM(B1)、2)

次に、自動フィルダウンしてモジュラスが満たされるようにします。ここに計算可能な基準を配置して、各セルをループするのに必要なSUMIFまたはSUMIFS条件を取得できます。

ARRAYのものよりも簡単で、ループのバックエンドを隠します!

5
YAtreyu

自分でこれに答えるつもりです(私が間違っている場合は修正してください):

VBAがインストールされていない/マクロが有効になっていない場合、Excelで行のグループ(配列など)を反復処理することはできません。

3
Jeff

異なるレートで繰り返される可変ループがある場合は、列を追加します。あなたが何をしようとしているのか明確にわかりませんが、私は適用できる何かをしたと思います。

Excelで単一のループを作成するのはとても簡単です。実際に作業を行います。新しいワークブックでこれを試してください

  1. A1に「1」を入力します
  2. A2に「= A1 + 1」と入力します

A3は、下にドラッグすると自動的に「= A2 + 1」になります。最初のステップは、明示的である必要はありません。 Excelはパターンを自動的に認識し、A2に「2」を入力するとカウントしますが、B1-B5を「100」に、B5-B10を「200」にしたい場合(同じようにカウントアップ)、理由を確認できますそれを行う方法を明示的に知ることは重要です。このシナリオでは、次を入力します。

  1. B1で「100」をドラッグしてB5に移動し、
  2. B6の「= B1 + 100」

B7は、下にドラッグすると自動的に「= B2 + 100」などになるため、基本的には5行ごとに無限に増加します。列Aに1〜5の数字のループを作成するには:

  1. セルA6に「= A1」と入力します。下にドラッグすると、Excelの処理方法により、セルA7などで自動的に「= A2」になります。

したがって、列Aには1から5までの数字が繰り返され、列Bには5セルごとに100ずつ増加します。たとえば、列Aで行ったのと同じ方法を使用して、列Bに100から900までの数字を繰り返すことができますたとえば、複数の変数を使用して可能な各組み合わせを生成する方法。列を下にドラッグすると、無限に実行されます。明示的にシナリオを説明しているわけではありませんが、手順に従って理解すれば、列を追加し、変数としてそれらを使用または使用するという問題に対する答えが得られるはずです。

1
Manopolus

セルの各ペアに対してこの操作を実行する計算スプレッドシートのどこかにテーブルを作成し、自動入力を使用して入力することができます。

そのテーブルの結果を結果セルに集約します。

結果を参照する200個のセルは、集計結果を保持するセルを参照できます。 Excelの最新バージョンでは、読みやすくするために、結果セルに名前を付けてそのように参照できます。

1
blueberryfields

@Natは良い答えを出しました。ただし、コードを短縮する方法はないため、必要なコードを「生成」するためにcontatenateを使用してはどうでしょうか。怠けているとき(セルにコード全体を入力するとき)に機能します。

したがって、必要なのは、パターンを特定し、Excelを使用してパターン「構造」を構築し、「=」を追加して目的のセルに貼り付けるだけです。

たとえば、達成したい(つまり、セルに入力する):

=IF('testsheet'!$C$1 <= 99,'testsheet'!$A$1,"") &IF('testsheet'!$C$2 <= 99,'testsheet'!$A$2,"") &IF('testsheet'!$C$3 <= 99,'testsheet'!$A$3,"") &IF('testsheet'!$C$4 <= 99,'testsheet'!$A$4,"") &IF('testsheet'!$C$5 <= 99,'testsheet'!$A$5,"") &IF('testsheet'!$C$6 <= 99,'testsheet'!$A$6,"") &IF('testsheet'!$C$7 <= 99,'testsheet'!$A$7,"") &IF('testsheet'!$C$8 <= 99,'testsheet'!$A$8,"") &IF('testsheet'!$C$9 <= 99,'testsheet'!$A$9,"") &IF('testsheet'!$C$10 <= 99,'testsheet'!$A$10,"") &IF('testsheet'!$C$11 <= 99,'testsheet'!$A$11,"") &IF('testsheet'!$C$12 <= 99,'testsheet'!$A$12,"") &IF('testsheet'!$C$13 <= 99,'testsheet'!$A$13,"") &IF('testsheet'!$C$14 <= 99,'testsheet'!$A$14,"") &IF('testsheet'!$C$15 <= 99,'testsheet'!$A$15,"") &IF('testsheet'!$C$16 <= 99,'testsheet'!$A$16,"") &IF('testsheet'!$C$17 <= 99,'testsheet'!$A$17,"") &IF('testsheet'!$C$18 <= 99,'testsheet'!$A$18,"") &IF('testsheet'!$C$19 <= 99,'testsheet'!$A$19,"") &IF('testsheet'!$C$20 <= 99,'testsheet'!$A$20,"") &IF('testsheet'!$C$21 <= 99,'testsheet'!$A$21,"") &IF('testsheet'!$C$22 <= 99,'testsheet'!$A$22,"") &IF('testsheet'!$C$23 <= 99,'testsheet'!$A$23,"") &IF('testsheet'!$C$24 <= 99,'testsheet'!$A$24,"") &IF('testsheet'!$C$25 <= 99,'testsheet'!$A$25,"") &IF('testsheet'!$C$26 <= 99,'testsheet'!$A$26,"") &IF('testsheet'!$C$27 <= 99,'testsheet'!$A$27,"") &IF('testsheet'!$C$28 <= 99,'testsheet'!$A$28,"") &IF('testsheet'!$C$29 <= 99,'testsheet'!$A$29,"") &IF('testsheet'!$C$30 <= 99,'testsheet'!$A$30,"") &IF('testsheet'!$C$31 <= 99,'testsheet'!$A$31,"") &IF('testsheet'!$C$32 <= 99,'testsheet'!$A$32,"") &IF('testsheet'!$C$33 <= 99,'testsheet'!$A$33,"") &IF('testsheet'!$C$34 <= 99,'testsheet'!$A$34,"") &IF('testsheet'!$C$35 <= 99,'testsheet'!$A$35,"") &IF('testsheet'!$C$36 <= 99,'testsheet'!$A$36,"") &IF('testsheet'!$C$37 <= 99,'testsheet'!$A$37,"") &IF('testsheet'!$C$38 <= 99,'testsheet'!$A$38,"") &IF('testsheet'!$C$39 <= 99,'testsheet'!$A$39,"") &IF('testsheet'!$C$40 <= 99,'testsheet'!$A$40,"") 

入力しませんでした。Excelで配置されたセル(作業中のファイルではなく、別のファイル)を結合するために「&」記号を使用します。

以下に注意してください。

part1> IF('testsheet'!$C$

パート2> 1 to 40

パート3> <= 99,'testsheet'!$A$

パート4> 1 to 40

パート5> ,"") &

  • Part1をA1、part3をC1、partをE1に入力します。
  • A2に「= A1」、C2に「= C1」、E2に「= E1」と入力します。
  • B2に「= B1 + 1」と入力し、D2に「= D1 + 1」と入力します。
  • G2に「= A2&B2&C2&D2&E2」と入力します
  • I2に「= I1&G2」と入力します

A2:I2を選択して、下にドラッグします。行ごとに数字が追加され、生成されたテキストがセルごとに、行ごとに結合されていることに注意してください。

  • I41コンテンツをコピーし、
  • どこかに貼り付け、前に「=」を追加し、余分な&と後ろを削除します。

結果=意図したとおりのコード。

Excel/OpenOfficeCalcを使用して、プロジェクトのコードを生成しました。私のために働く、それが他の人に役立つことを願っています。 (:

1
p._phidot_