A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
こんにちは!
横からお邪魔します。
>関数で縦に・・・
とありますのでお望みの方法ではないと思いますが、
VBA向きの質問なので、VBAでの一例です。
操作したいシート見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)マクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
Sub Sample1() '//この行から//
Dim i As Long, cnt As Long, lastRow As Long
lastRow = Cells(Rows.Count, "D").End(xlUp).Row
If lastRow > 1 Then
Range(Cells(2, "D"), Cells(lastRow, "D")).ClearContents
End If
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
If Cells(i, "B") > 0 Then
Do Until cnt = Cells(i, "B")
cnt = cnt + 1
Cells(Rows.Count, "D").End(xlUp).Offset(1) = Cells(i, "A")
Loop
End If
cnt = 0
Next i
End Sub '//この行まで//
※ 関数でないので、データ変更があるたびにマクロを実行する必要があります。
※ あくまで↓の画像のような配置でのコードなので
配置が異なればコードも変わってきます。m(_ _)m
回答ありがとうございます。
すみません…VBAという言葉を初めて聞いたほどのPC素人の為とても扱うことができませんでした…( ;∀;)
見出しで右クリックの時点でコードの表示という項目が見つけられず、VBA画面もマクロの実行もさっぱりわかっておりませんm(__)m
ただ、いろいろやっていく中で「これは関数でやる作業ではないな」と思いながら模索していて、VBAというものがあるということが知れてよかったです。
いまはさっぱりですが理解できるよう努力しますm(__)m
No.2
- 回答日時:
こんにちは
考え方のヒントを・・・
と言っても、考え方は既にNo1様がご説明なさっているので、それを順次具体化してみました。
添付図のA、B列はご質問文の内容。(B列は数値にしてあります)
D→G列の順に、計算をしながら最終の答え至るプロセスとなっています。
いずれの列も、1行目に式を入れ、下方に(添付図では12行目まで)フィルコピーする形としています。
◇D列
C列の累計を計算しています。普通なら5行目以降が 9,9,9,9…となるところですが、データの終了がわかるように、敢えて0となるように計算しています。
◇E列
D列の値から、自分自身の行番号よりも大きな値のうち最小のものを探します。表示しているのはその行番号。
例えば、E6セルの値を例にすると、自分の行番号は6になります。D列を上から順に見てゆくと、3、5は6より小さいのでスルー。8が6より大きいのでこの行番号(=3)を計算しています。
少々複雑な計算なので、もう少し分解したいところですが、途中を求めても、結局どこかで同じくらいの計算になっていまうので、ここまでまとめてしまいました。
◇F列
A列から、E列で求めた行番号に相当するセル位置の値を求め、表示します。
◇G列
対象範囲外(10行目以降)がE列でエラーになるように計算しているので、エラーの場合は結果を表示しない(空白表示)するように処理を加えます。
多分、このG列がお求めになりたい結果ではないかと思います。
ここまでできれば、上記の計算を組み合わせることで、途中計算の表示を省略することが可能になります。
とはいえ、組み合わせた結果出来上がる関数式は、長く複雑なものになりがちで、メンテナンス性は悪くなります。
無理に全部をまとめなくとも、適当な分解の仕方をして、作業列などに収めておくほうが実際的ではないかと思います。
こうすることによって、メンテナンス性が良くなるだけでなく、計算速度の向上にもつながることがあります。
回答ありがとうございます。
すごく分かりやすく具体化していただいたおかげで理解することはできました!
ただ根本的に自分のエクセルの知識がなくE列の計算をセルに入力?するのかが分かっておらず(入力というところ自体違うかも?)色々模索しているところです・・・。
なんにせよやり方があるということだけでも前に進めたので引き続き検討してみます!
No.1
- 回答日時:
できますよ。
でも、そのままじゃやり難い。
まずは応募数のセルは「数値」として、セルの書式設定で「口」を付けるようにしましょう。
でないと「文字列」で書かれた ”3口” から「3」という「数値」を抽出する手順が追加されてしまい煩雑になります。
そこまですれば、上から応募数を足して、表示させたい行数との関係を確認して応募者の名前を表示させるようにすれば良い。
・1行目は問答無用で一番上の人
・2行目は応募数を足して「2」以上で最も小さい数の口数合計の人の名前。
・3行目は応募数を足して「3」以上で最も小さい数の口数合計の人の名前。
・4行目は応募数を足して「4」以上で最も小さい数の口数合計の人の名前。
・・・
のように処理を行う。
さらに簡単にするならば、口数が書かれた横に作業列を設け、上から順番に口数を足した数を表示させておくと良いでしょう。
例えば、
田中 3口 3
鈴木 2口 5
佐藤 4口 9
こんな感じ。
こうすれば、展開して表示したい4行目は「4」以上の数で最も小さい数である「5」がある「佐藤」が該当すると分かる。
あとはこれを数式にするだけ。
・・・
と、まあ、ざっくり説明しましたが、このような考え方で実現することが可能です。
あとは、この説明の中で分からないところを「補足」していただければ詳しく説明します。
ただし数式を書いての説明になりますが、出来上がった数式は示しません。
自力で数式を作ることができるようにアドバイスをします。
「考え方」と「使用する関数に関する注意点」を示しますので、
実際に自身で数式を作ってみてください。
・・・
ちなみに、こういった考え方を「アルゴリズム」と言います。
難しいと感じるかもしれませんが、
紙に書かれた表から手作業で書き写すときの手順を一つずつ再現してるだけなんです。
手作業で出来るならExcelでも出来るということになります。
・・・余談・・・
「代わりに付くってください」という【作業依頼】は【Q&A】ではありません。
ここは疑問を解決する場所です。
実際の数式を示す回答が付くこともありますが、
それはその回答を参考にして質問者さん自身も考えてくださいという意味が込められています。
もしも「考えるの面倒だから質問してるんだ。理屈なんてどうでもいいからテンプレートとして使える数式を出せ」ということであれば、
ここは使わないようにすることを勧めます。
それは目の前にある「問題」の解決になるかもしれませんが、「疑問」の先送りにしかならず「根本的な解決」ではないからです。
回答ありがとうございます。
口数が書かれた横に作業列を設け、上から順番に口数を足した数を表示させておくところまでは理解できました。ものすごく作れそうな気がしてきたのですが、そこからその数字の数だけ列に表示する関数の見つけ方?考え方がいまいち分からず止まってしまっております・・・。
丸投げに感じさせていたらすみません。もしよろしければもう少し補足していただけると幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) 20万行あるデータを動かしたい 2 2023/06/13 15:21
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Excel(エクセル) エクセルの条件付き書式で*を使いたい 4 2022/05/13 16:49
- Excel(エクセル) Excelマクロの差分抽出のコードを教えていただきたいです。 2 2023/03/14 11:40
- Excel(エクセル) (教えて下さい)ExcelのSUMIF又はSUMIFSを使って合計値の算出 4 2023/07/24 11:23
- Excel(エクセル) メモ帳からエクセルにセル区切りで表示させたいんです 7 2023/02/25 22:04
- その他(学校・勉強) 日本語について 3 2022/04/07 22:50
- メディア・マスコミ テレビのワイドショーに文化人枠で出演している先生や解説者の方々は、ギャラはどのくらいもらうのでしょう 5 2023/01/04 13:01
- R&B・ヒップホップ 日本のアーティストで、R&Bのイメージに合う人は誰ですか? キングトーンズ、大木トオル、ニック岡井( 1 2022/09/02 05:08
- MySQL 【MySQL】本当に困っているので、助けてください。よろしくお願いします。 3 2023/06/03 14:24
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SUMIFとCOUNTIFを合わせたよう...
-
【スプレッドシート】指定の日...
-
エクセルでの複数条件下での標...
-
EXCEL 経過年数の平均を求めた...
-
エクセル シフト表 6連続勤...
-
エクセル2003 MONTH関数で
-
(条件付書式)EXCELで土日の行...
-
エクセルで「ぶら下げ」書式を...
-
ある一定時間を超えた場合の超...
-
エクセルで年月の合計の関数を...
-
Excel:月またぎを含む日数の差...
-
Excelの表以外が暗い?
-
Excel折れ線グラフ横軸について
-
エクセルで、一つのセルに二つ...
-
Excelで1ヶ月間の勤務時間の計算
-
エクセルの質問です。
-
エクセルにて「週」から日付を...
-
SUMIF関数の結果が0になってし...
-
ある数値から始まるものをカウ...
-
エクセルvbaで、同じ番号の請求...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SUMIFとCOUNTIFを合わせたよう...
-
エクセルでの複数条件下での標...
-
エクセルで年月の合計の関数を...
-
ある一定時間を超えた場合の超...
-
【スプレッドシート】指定の日...
-
Excelの表以外が暗い?
-
エクセルにて「週」から日付を...
-
エクセルで「ぶら下げ」書式を...
-
隣のセルに入力したら自動的に...
-
EXCEL 経過年数の平均を求めた...
-
エクセルで、一つのセルに二つ...
-
EXCEL 年月表示をするVBAを教...
-
エクセル シフト表 6連続勤...
-
エクセル2003 MONTH関数で
-
Excel:月またぎを含む日数の差...
-
vbaで「/」を削除したい
-
Excelで1ヶ月間の勤務時間の計算
-
ある数値から始まるものをカウ...
-
エクセルで角度の計算できますか?
-
SUMIF関数の結果が0になってし...
おすすめ情報