[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『同じ値を遡って探したい。』(正)
毎度お世話になります。
済みませんが、どなたか教えてくださいませんか。
A列に数値データが時系列に入っています。
B列の数値と同じ数値をA列の同じ行から遡って探し、
最初に見つかった行のC列にのみAと表示したい。
現状はB列の値を見て、A列を目で探してC列に入力しています。
C列にはどの様な計算式をいれればよいでしょうか。
Me,2002 宜しくお願いします。(正)
A B C 1 データー キー 答え 2 7030 3 7030 4 7140 7140 A 5 6400 6 6120 7 5120 A 8 5210 5120 9 5800 A 10 5660 11 5700 12 5510 13 5650 14 5790 15 5610 5800 16 5140 17 5390
C2へ =IF(SUMPRODUCT(($B$2:$B$17=A2)*1)*(COUNTIF($A$2:A2,A2)=1),"A","") として、必要範囲へコピー、貼り付けです。 (KAMIYA)
C2に下の数式を入力し、C17までフィルドラッグされたらどうでしょう? (LOOKUP)
=IF(COUNTIF(B$2:B$17,A2), IF(COUNTIF(A2:INDEX(A$2:A$17,MATCH(A2,B$2:B$17,)),A2)=1,"A",""),"")
A B C 1 データー キー 答え 2 7140 3 7030 4 7140 7140 A 5 7140 6 6120 7 5120 A 8 5210 5120 9 5800 A 10 5660 11 5700 12 5510 13 5650 14 5790 15 5610 5800 16 5140 17 5390
「初出」ではなくて「さかのぼって」ですね。 私の数式は無視してください。 (KAMIYA)
(KAMIYA)さん、(LOOKUP)さん
早速のご教授有難うございました。
(LOOKUP)さんの式を利用させていただきました。
(LOOKUP)さん。
希望通りの答えが得られ喜んでいます。
実は実際はA,B,C列の間に別の列が入っています。
B列のデータは計算式でもって来ています。
それを考慮して列名を変えて検証しますと、
時々B列にデータが無いのにC列にAが表示されます。
同じ数値で質問どおりの列の並びにすると正しく出来ます。
いろいろ調べているのですが解りません。
教えていただいた計算式をただ入力しているだけで、
式が理解できていない為、解決出来ないのだと思います。
厚かましいお願いですが計算式の説明をして頂けませんでしょうか。
よろしくお願いします。 (正)
この数式の判りにくいところは、 COUNTIF(A2:INDEX(A$2:A$17,MATCH(A2,B$2:B$17,)),A2)の INDEX(A$2:A$17,MATCH(A2,B$2:B$17,))でしょう? これは、 MATCH(A2,B$2:B$17,)でA列の自分の値がB列に出現する最上段の位置を求め、 INDEX(A$2:A$17,その位置)でそのセル参照を戻しているのです。
私が掲載した表で、C2の数式のこの部分は、 =INDEX(A$2:A$17,MATCH(A2,B$2:B$17,))ですが、 =INDEX(A$2:A$17,3)でA4を指しています。 自分のところからB列に同じ数値がある最上行のセル位置です。
COUNTIF(A2:A4,A2)は、2ですから、直ぐ外側のIF()の""を戻しています。
C4では、 =INDEX(A$2:A$17,MATCH(A4,B$2:B$17,))になりますが、 =INDEX(A$2:A$17,3)は、同様にA4を指しています。 しかし、 COUNTIF(A4:A4,A4)は、1になり、Aを戻しています。
このような意図で試作しています。 (LOOKUP)
未解決のごようすですが、状況は、よく理解できませんので、とりあえず、 下のようにして、A列が数値以外の場合は、""とするようにしたらどうでしょう? =IF(COUNT(A2),IF(COUNTIF(B$2:B$17,A2), IF(COUNTIF(A2:INDEX(A$2:A$17,MATCH(A2,B$2:B$17,)),A2)=1,"A",""),""),"")
(LOOKUP)さん。 有難うございます。
早速試してみましたが、やはり同じ結果になります。
実際のデータでキーのところのデータも計算式の結果でなく数値そのものを入力して、
教えていただいた計算式@Aの二通りを検証しましたが、500データで9ケ不都合
が出ます。(検証*のところ)
少しデータが多いですが送らせていただきます。
お手すきの折見ていただけたらありがたいです。
よろしくお願いします。 (正)
A B C D E 1 データー キー 答え@ 答えA 検証 2 7820 7820 A A 3 8820 0 4 9750 0 5 10750 0 6 10900 0 7 11000 0 8 11410 0 9 11340 0 10 10800 0 11 10350 0 12 10500 0 13 10880 0 14 10780 0 15 11000 0 16 12000 0 17 13990 0 18 14200 0 A A 19 13950 0 20 12810 0 21 14090 0 22 13950 0 23 13750 0 24 13400 0 25 13990 0 26 13540 0 27 13700 0 28 12950 14200 29 12090 0 30 11800 0 31 11480 0 32 10370 0 A A 33 10700 0 34 11160 10370 35 11880 0 A A 36 10830 0 37 11280 0 38 11080 11880 39 10200 0 40 9850 0 41 10100 0 42 10150 0 43 9990 0 44 10020 0 45 9710 0 46 9350 0 47 8670 0 48 8580 0 49 8200 0 50 8650 0 51 8750 0 52 7950 0 53 7500 0 A A 54 8010 7500 55 8560 0 A A 56 7880 0 57 8050 8560 58 7680 0 59 7490 0 60 7380 0 61 6840 0 62 6550 0 A A 63 7110 0 64 7050 6550 65 8050 0 66 8260 0 67 8500 0 A A 68 8080 8500 69 7500 0 A A * 70 6870 0 71 7000 0 72 7250 0 73 6890 0 74 7060 0 75 6750 0 76 6650 0 77 6160 0 78 5970 0 79 6380 0 80 6240 0 81 5900 0 82 5790 0 83 6130 0 84 5960 0 85 5800 0 86 6000 0 87 5650 0 88 5360 0 89 5340 0 90 5080 5080 A A 91 5640 0 A A 92 5160 5640 93 4950 0 94 4970 0 95 4600 0 96 4100 0 97 3780 0 A A 98 3830 0 99 3840 0 100 3940 3780 101 4230 0 A A 102 4070 0 103 3970 0 104 3960 0 105 3920 4230 106 3520 0 107 3410 0 108 2995 0 A A 109 3170 2995 110 3670 0 111 3970 0 112 4470 0 113 4890 0 114 5390 0 115 5430 0 116 5210 0 117 6050 0 118 7050 0 A A 119 6910 7050 120 6300 0 A A 121 6900 6300 122 6950 0 A A 123 6650 0 124 6360 6950 125 5680 0 126 6150 0 127 5950 0 128 5950 0 129 6170 0 130 6040 0 131 5880 0 132 5810 0 133 5700 0 134 5480 0 135 5580 0 136 5330 0 137 5180 0 138 5530 0 139 5450 0 140 5390 0 141 5240 0 142 5240 0 143 5150 0 144 4850 4850 A A 145 5350 0 A A 146 5220 0 147 5070 0 148 4920 5350 149 4460 0 150 4180 0 151 4000 0 A A 152 4260 0 153 4210 0 154 4190 0 155 4300 0 156 4200 0 157 4320 4000 158 4820 0 159 4930 0 160 5100 0 A A 161 4850 0 162 4700 0 163 4700 0 164 4720 5100 165 4520 0 166 4540 0 167 4790 0 168 4550 0 169 4410 0 170 4530 0 171 4600 0 172 4610 0 173 4510 0 174 4360 4360 A A 175 4800 0 176 4880 0 177 4790 0 178 4660 0 179 4510 0 180 4560 0 181 4580 0 182 4700 0 183 4990 0 184 5390 0 185 5650 0 A A 186 5390 0 187 5200 0 188 5160 0 189 5180 5650 190 5060 0 191 5290 0 192 5020 0 193 5100 0 A A * 194 4980 0 195 5100 0 196 5150 0 197 5100 0 198 4990 0 199 4970 0 200 4790 0 201 4790 0 202 4620 0 203 4520 0 204 4420 0 205 4400 0 206 4430 0 207 4400 0 208 4500 0 209 4580 0 210 4410 0 211 4230 0 A A * 212 4250 0 213 4270 0 214 4120 0 215 3940 0 216 3900 0 A A 217 3920 3900 218 4340 0 A A 219 4310 0 220 4160 0 221 4170 0 222 4180 0 223 4040 0 224 4090 0 225 4040 0 226 4040 4340 227 3880 0 228 3860 0 229 3720 0 230 3560 0 231 3600 0 232 3450 0 233 3650 0 234 3570 0 235 3500 0 236 3380 0 237 3200 0 238 3310 0 239 3080 0 240 3250 0 241 3180 0 242 3280 0 243 3300 0 244 3010 0 A A 245 3140 0 246 3200 0 247 3300 3010 248 3410 0 A A 249 3200 0 250 3350 0 251 3240 0 252 3130 0 253 3070 3410 254 3020 0 255 3140 0 256 3070 0 257 2990 0 258 2950 0 259 2860 0 260 2885 0 261 2830 0 262 2595 0 263 2570 0 264 2660 0 265 2625 0 266 2525 0 267 2455 0 268 2310 0 269 2175 0 A A 270 2360 0 271 2230 2175 272 2500 0 273 2450 0 274 2400 0 275 2545 0 A A 276 2345 2545 277 2245 0 278 2290 0 279 2100 0 A A 280 2295 2100 281 2380 0 A A 282 2290 0 283 2280 0 284 2240 0 285 2215 2380 286 2110 0 287 2110 0 288 2110 0 289 2180 0 290 2105 0 A A 291 2175 0 A A * 292 2215 0 293 2130 0 294 2135 2105 295 2350 0 296 2425 0 297 2380 0 A A * 298 2580 0 299 2980 0 300 2785 0 301 3020 0 302 3040 0 303 3040 0 304 3070 0 305 3090 0 A A 306 2990 3090 307 2700 0 308 2600 0 309 2620 0 310 2585 0 311 2595 0 312 2535 0 313 2660 0 314 2500 0 315 2525 0 316 2430 0 317 2325 0 A A 318 2470 0 319 2420 2325 320 2650 0 321 2660 0 322 2695 0 323 2635 0 324 2540 0 325 2560 0 326 2695 0 327 2830 0 A A 328 2800 0 329 2700 0 330 2680 2830 331 2470 0 332 2505 0 333 2620 0 334 2660 0 335 2700 0 336 2560 0 337 2500 0 338 2650 0 339 2520 0 340 2475 0 341 2340 0 342 1958 0 A A 343 2145 0 344 2100 0 A A * 345 2030 0 346 2070 0 347 2030 0 348 2085 0 349 2120 1958 350 2230 0 351 2285 0 A A 352 2255 0 353 2250 0 354 2135 0 355 2150 0 356 2120 0 357 2110 0 358 2110 0 359 2225 0 360 2235 0 361 2125 0 362 2110 0 363 2075 0 364 2060 0 365 2080 2285 366 2010 0 367 1980 0 368 1981 0 369 1942 0 370 1861 0 371 1770 0 372 1745 0 373 1869 0 374 1800 0 375 1792 0 376 1781 0 377 1800 0 378 1700 0 379 1604 0 380 1649 0 381 1582 0 A A 382 1625 1582 383 1780 0 384 1760 0 385 1710 0 386 1782 0 387 1803 0 388 1856 0 389 1959 0 390 2045 0 391 1994 0 392 2135 0 393 2400 0 394 2800 0 A A 395 2690 0 396 2540 0 397 2590 0 398 2580 2800 399 2480 0 400 2430 0 401 2380 0 402 2270 0 403 2240 0 A A 404 2355 0 405 2450 2240 406 2495 0 A A 407 2375 0 408 2325 0 A A * 409 2380 0 410 2355 0 411 2440 0 412 2395 0 413 2465 0 414 2395 0 415 2400 0 416 2340 0 417 2265 0 418 2295 0 419 2285 2495 A A * 420 2075 0 421 2110 0 422 2015 0 423 2040 0 424 2015 0 425 2125 0 426 2070 0 427 2025 0 428 1950 0 429 1941 0 430 1921 0 431 1875 0 432 1898 0 433 1975 0 434 1911 0 435 1874 0 A A 436 1875 0 437 1931 0 438 2020 0 439 1971 0 440 1979 0 441 1985 1874 442 2095 0 443 2105 0 A A * 444 2115 0 A A 445 2085 0 446 2060 0 447 2045 0 448 2035 0 449 1950 0 450 2025 0 451 1991 0 452 2005 0 453 2010 0 454 1984 0 455 1976 0 456 1955 0 457 1917 2115 458 1895 0 459 1883 0 460 1811 0 461 1650 0 462 1603 0 463 1700 0 464 1655 0 465 1624 0 466 1665 0 467 1625 0 468 1625 0 469 1664 0 470 1670 0 471 1662 0 472 1691 0 473 1710 0 474 1734 0 475 1702 0 476 1714 0 477 1670 0 478 1650 0 479 1646 0 480 1605 0 481 1601 0 482 1475 0 483 1475 0 484 1420 0 485 1365 0 486 1485 0 487 1425 0 488 1431 0 489 1390 0 490 1380 0 491 1380 0 492 1350 0 493 1296 0 494 1266 0 495 1280 0 496 1190 0 497 1232 0 498 1117 0 A A 499 1221 1117 500 1245 0 501 1235 0 502 終わり 終わり 終わり 終わり 終わり
横からおじゃまします。 数式を拝見致しましたが、複雑で私には書けそうにありませんでした。 (考えてみたのですが、解決できませんでした(汗) ) こんな時はすぐマクロに逃げてしまうのですが・・・ お急ぎで、マクロで良ければ、以下のコードで一応動きました。 (マーヤ) Sub test() Dim I As Long, II As Long For I = 2 To 1000 If Cells(I, 2).Value > 0 Then For II = I To 2 Step -1 If Cells(II, 1).Value = Cells(I, 2).Value Then Cells(II, 6).Value = "A": Exit For End If Next II End If Next I End Sub
実は私、マクロは勉強したく思っていますが超初心者のため例題では
動かせたのですが、実際の場合はどのように編集し直せばよいのか解りません。
実際は例題のA2のデータがF6から1000行ほど、
キーのB2のデータがAY6から1000行ほどに入っています。
C2の答えを BA6から1000行ほどに出したいのです。
この場合コードをどのように編集すればよろしいのか、ご教授願えませんでしょうか。
よろしくお願いします。
(正)
For〜Nextのループだけですので、わかりやすいと思います。 セル番地 F5=Cells(5,6) つまりCells(行番号,列番号)となります。 ↓書き換えましたが、確認まではしておりません(汗)・・・。(マーヤ) Sub test() Dim I As Long, II As Long For I = 6 To 1100 '行数は6〜1100としています If Cells(I, 51).Value > 0 Then 'AY列のセル For II = I To 6 Step -1 If Cells(II, 6).Value = Cells(I, 51).Value Then Cells(II, 53).Value = "A": Exit For 'BA列に"A"を表示 End If Next II End If Next I End Sub
早速確認させていただきました。
ピッタシ正解。有難うございました。
今後とも宜しくお願いします。
(正)
掲載の数式は、上の方にない場合には、下の直近行を対象にしているのですが、 下方向は、無視するのでしたら、このようにされたらどうでしょう? (LOOKUP)
=IF(COUNTIF(B2:B$17,A2), IF(COUNTIF(A2:INDEX(A$2:A$17,MATCH(A2,B$2:B$17,)),A2)=1,"A",""),"")
有難うございました。
不具合なところも無く、完全に思い通りの結果になりました。
私の最初の質問が不十分なため大変ご迷惑をおかけしました。
今後は気をつけます。
お陰でいろいろと勉強させていただきました。
今後とも宜しくお願いします。 (正)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.